Proceso de instalación y ejecución de este proyecto:
- Clonar el repositorio o descomprimir el archivo zip del proyecto.
- Ingresar al directorio root del proyecto para renombrar el archivo .env.example por .env y asi cargar todas las configuraciones del proyecto.
- Abrir el proyecto en una terminal, para ejecutar los siguientes comandos.
- Ejecutar el siguiente comando para descargar todas las dependencias utilizadas en este proyecto, es necesario el gestor de paquetes llamado Composer.
composer install
- Ejecutar el siguiente comando para revisar la lista de todas las rutas (endpoint's) de la api.
php artisan route:list --path=api
- Ejecutar el siguiente comando para realizar todas las migraciones y cargar los seeders para ejecutar las pruebas del proyecto.
Desde la consola
php artisan migrate:fresh --seed
- Ejecutar el siguiente comando para revisar el test unitario.
Desde la consola
php artisan test --without-tty
- Ejecutar el siguiente comando para habilitar el servidor de laravel.
Desde la consola
php artisan serve
- Utilizar un cliente REST para revisar los endpoint's; se puede utilizar la herramienta llamada Postman.
Endpoints
- POST URL_SERVER/api/auth para obtener el token (JWT).
- GET URL_SERVER/api/leads para obtener la lista de candidatos.
- GET URL_SERVER/api/lead/{id} para obtener un candidato.
- POST URL_SERVER/api/lead para crear un candidato.
- Opcional: Dentro las extensiones de VSCode existe la herramienta llamada RESTClient; con dicha extensión se puede hacer uso de los 4 archivos por endpoint dentro del directorio llamado api-request que se encuentra en la raiz del proyecto.
En cada archivo *.rest es necesario cargar el body o token (JWT) requerido:
- Archivo POST_auth_login.rest para obtener el token (JWT).
- Archivo GET_leads_index.rest para obtener la lista de candidatos.
- Archivo GET_lead_show.rest para obtener un candidato.
- Archivo POST_lead_create.rest para crear un candidato.
api-request
- POST_auth_login.rest
- GET_leads_index.rest
- GET_lead_show.rest
- POST_lead_create.rest
app/Http/Controllers
- UsuarioController.php
- CandidatoController.php
- JWTController.php
app/Http/Middleware
- CheckRole.php
- CheckJWT.php
app/Http/Requests
- UsuarioLoginRequest.php
- CandidatoCreateRequest.php
app/Http/Resources
- MetaTrueResource.php
- MetaFalseResource.php
- CandidatoCollection.php
- CandidatoResource.php
app/Interfaces
- RepositoryInterface.php
app/Models
- Usuario.php
- Candidato.php
app/Repositories
- Repository.php
database/factories
- UsuarioFactory.php
- CandidatoFactory.php
database/migrations
- 2023_10_27_021853_create_usuarios_table.php
- 2023_10_27_021854_create_candidatos_table.php
- 2023_10_27_135021_create_permission_tables.php
database/seeders
- UsuarioSeeder.php
- CandidatoSeeder.php
- RolesPermisosSeeder.php
tests/Feature/Http/Controllers
- UsuarioControllerTest.php
- CandidatoControllerTest.php
app/Exceptions
- Handler.php (Formato de response con base a MetaFalseResource.php)
app/Http
- Kernel.php (Se agregaron 2 middlewware: checkJWT y CheckRole)
app/Providers
- AppServiceProvider.php (Se agregaron los archivos para el repository pattern RepositoryInterface.php y Repository.php)
routes
- web.php (Se borraron las rutas)
- api.php (Se crearon los 4 endpoints para la api)