# ogCore project ## Descripción ogCore es el servicio central de OpenGnsys, diseñado para proporcionar funcionalidades a través de una API RESTful. Esta herramienta utiliza tecnología PHP, aprovechando el framework Symfony y el ORM Doctrine para gestionar la base de datos. A continuación, se detallan los pasos necesarios para desplegar el proyecto en un entorno de desarrollo. ## Versiones y tecnologías utilizadas - PHP 8.3 - Symfony 6.4 - Doctrine 2.19 - API Platform 3.2 - MariaDB 10.11 ## Requisitos Antes de comenzar, asegúrate de tener los siguientes requisitos: - Docker - Docker compose ## Instalación ### Desplegar contenedores Para que no haya conflictos entre los puertos, asegúrate de que no tienes ningún servicio corriendo en los puertos 8080 y 3306. ```sh docker compose up --build -d ``` Comprobamos que se han levantado correctamente bien los 3 contenedores de la aplicación: ```sh docker ps ``` Y deberiamos ver algo parecido a : - ogcore-nginx - ogcore-php - ogcore-database ### Instalamos dependencias ```sh docker exec ogcore-php composer install docker exec ogcore-php php bin/console lexik:jwt:generate-keypair --overwrite ``` Comprobamos, que el contenedor de Nginx, tiene el puerto 8080 levantado correctamente, asi que tan solo tendremos que acceder a la siguiente URL: ```sh http://127.0.0.1:8080/docs ``` Si todo ha ido bien, deberiamos ver la documentación de la API de ogCore. Para poder actualizar la base de datos: Para inicializar la base de datos: ```sh docker exec ogcore-php php bin/console doctrine:migrations:migrate --no-interaction ``` ```sh docker exec ogcore-php php bin/console doctrine:fixtures:load --no-interaction docker exec ogcore-php php bin/console app:load-default-user-groups ``` ## UX Api Platform Api Platform proporciona una interfaz de usuario para interactuar con la API de ogCore. Para acceder a la interfaz de usuario, accede a la siguiente URL: ```sh http://127.0.0.1:8080/docs ``` Para poder autenticarte, necesitas un token JWT. Para obtenerlo, accedemos al endpoint de autenticación "auth/login": ![img.png](swagger-assets/img.png) ![img.png](swagger-assets/img2.png) Obtenemos el token y lo introducimos en la interfaz de usuario de Api Platform de la siguiente manera: ![img.png](swagger-assets/img3.png) Ahora, ya podemos interactuar con la API de ogCore. Para comprobar que todo está correcto, podemos fijarnos en los headers de las llamadas Curl, y ver que el token JWT se ha introducido correctamente. ## Test Para ejecutar los test, ejecutamos el siguiente comando: ```sh docker compose exec php bin/phpunit ``` ## Reiniciar base de datos Es posible que en momentos de desarrollo, sea necesario volver a cargar la base de datos y actualizar los esquemas de la misma, para ello, ejecutamos el siguiente comando: ```sh docker exec ogcore-php php bin/console doctrine:database:drop --force docker exec ogcore-php php bin/console doctrine:database:create ```