Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/platinum-place/laravel-passport
https://github.com/platinum-place/laravel-passport
laravel laravel-lang laravel-passport laravel-sail oauth2 repository-pattern rest-api service-pattern
Last synced: 9 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/platinum-place/laravel-passport
- Owner: platinum-place
- Created: 2024-10-16T21:21:32.000Z (21 days ago)
- Default Branch: main
- Last Pushed: 2024-10-23T18:24:14.000Z (15 days ago)
- Last Synced: 2024-10-25T16:25:18.342Z (13 days ago)
- Topics: laravel, laravel-lang, laravel-passport, laravel-sail, oauth2, repository-pattern, rest-api, service-pattern
- Language: PHP
- Homepage:
- Size: 104 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Descripción
Este proyecto es un ejemplo diseñado para ilustrar la metodología de trabajo en proyectos desarrollados con Laravel.
En particular, se muestra el uso de autenticación OAuth2, en Laravel Passport, un paquete para dicho sistema de autenticación.
El proyecto muestra como interpreto dicho paquete para la creation de REST API para la communion entre sistemas, sin intervention humana.
## Metodologías y patrones utilizados
Se han implementado capas lógicas para el uso de las diferentes tecnologías de Laravel.
### Enums
Los enums son constantes que comparten lógicas y reglas, siempre vinculadas a un modelo principal, y hacen referencia a una tabla que contiene la misma información.
### Logs
Los logs están implementados de dos maneras:
1. Los logs estándar de Laravel, utilizando su *facade* con el canal `database`.
2. Logs a partir del modelo, donde todos los modelos tienen la capacidad de utilizarlos a través de la clase `BaseModel`.Ambos enfoques permiten una gestión eficaz de los registros en la base de datos.
### Modelos
Además del modelo de prueba incluido en este proyecto, existen modelos base esenciales para las funcionalidades principales, como:
- Gestión de logs.
- Manejo de acciones.
- Clase abstracta que sirve como base para todos los modelos.Estos modelos proporcionan una estructura sólida para las operaciones del proyecto.
### Repositorios
Los repositorios son una capa adicional sobre los modelos, encargada de manejar la lógica relacionada con la base de datos en torno a un modelo.
Se utiliza una clase principal que sirve como base, de la cual las clases hijas pueden heredar y sobrescribir la lógica cuando sea necesario. Este patrón permite una separación clara de responsabilidades y facilita el mantenimiento del código.
### Servicios
Los servicios forman una capa encargada de manejar la lógica de negocio que se encuentra entre los controladores y los modelos.
Se implementa una clase principal que define los métodos clave y gestiona los repositorios, permitiendo una organización más clara de la lógica de negocio y facilitando su reutilización en distintas partes del sistema.
## Iniciar contenedor
Para los contenedores, estoy utilkizando la interfaz de comando de Laravel, Sail. Al ser scripts preparados, es posible utilizar las instrucciones de Laravel en su documentación.
Para utilizarlo, es necesario contar con las dependencias necesarias:
```bash
composer install
```Despues, iniciar sail:
```bash
./vendor/bin/sail up -d
```
Listo, el proyecto esta en funcionamiento. Solo restaria ejecutar las migraciones y seeders:```bash
./vendor/bin/sail artisan migrate --seed
```## Opcional: Crear un alias para Sail
Si deseas configurar un alias para el comando:
```bash
./vendor/bin/sail
```
,sigue estos pasos:1. Abre la consola de tu sistema operativo y ejecuta el siguiente comando (para sistemas basados en Debian):
```bash
nano ~/.bashrc
```2. En el archivo que se abrirá, agrega la siguiente línea para definir el alias:
```bash
alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'
```3. Guarda el archivo y recarga la configuración ejecutando:
```bash
source ~/.bashrc
```A partir de ahora, podrás utilizar el alias sail para ejecutar comandos, por ejemplo:
```bash
sail artisan optimize:clear
```## Probar funcionalidades
Dentro del proyecto se encuentra una colección de endpoints (exportada desde Postman) que permite su importación y prueba.
## Paquetes utilizados
- [Passport](https://github.com/laravel/passport) para la autenticación.
- [Laravel Lang](https://github.com/Laravel-Lang/common) para las traducciones.
- [Laravel Sail](https://github.com/laravel/sail) para la gestión del entorno de pruebas.