API Gateway de autenticación y autorización con sistema de roles personalizado para gestión de videojuegos y desarrolladoras. Implementa control de acceso granular con 3 roles principales y endpoints públicos para consulta de videojuegos.
- JWT Tokens: Autenticación basada en tokens JWT
- Refresh Tokens: Renovación automática de tokens
- Bcrypt: Hash seguro de contraseñas
- Validación: Contraseñas complejas y emails válidos
- 🎮 Desarrolladora: Gestiona sus propios videojuegos y desarrolladora
- ✏️ Editor: Gestiona todos los videojuegos y lee desarrolladoras
- 👑 Superadmin: Acceso completo a todas las operaciones
- GET /videojuegos/*: Acceso público sin autenticación
- GET /auth/roles: Información de roles disponibles
- GET /auth/roles/{role}/permissions: Permisos específicos por rol
- Validación de Propiedad: Desarrolladoras solo pueden modificar sus recursos
- CORS: Configuración de orígenes permitidos
- Rate Limiting: Protección contra abuso
- Logs de Auditoría: Registro de todas las operaciones
- Python 3.8+
- PostgreSQL 12+
- pip
- Clonar el repositorio:
git clone <repository-url>
cd API_AUTH- Instalar dependencias:
pip install -r requirements.txt- Configurar entorno:
python Test/Inits/setup_environment.py development- Inicializar base de datos:
python Test/Inits/init_database.py- Ejecutar la aplicación:
python app.pyLa API estará disponible en http://localhost:8000
# Listar videojuegos (sin autenticación)
curl http://localhost:8000/api/videojuegos
# Buscar videojuegos
curl "http://localhost:8000/api/videojuegos/buscar/?q=action"
# Obtener estadísticas
curl http://localhost:8000/api/videojuegos/estadisticas/# Registrar desarrolladora
curl -X POST http://localhost:8000/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "dev@ejemplo.com",
"password": "DevPassword123!",
"role": "desarrolladora"
}'
# Iniciar sesión
curl -X POST http://localhost:8000/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "dev@ejemplo.com",
"password": "DevPassword123!"
}'# Crear videojuego (requiere token)
curl -X POST http://localhost:8000/api/videojuegos \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{
"titulo": "Mi Videojuego",
"desarrolladora": "Mi Desarrolladora",
"categoria": "Action",
"precio": 29.99
}'API_AUTH/
├── src/ # Código fuente
│ ├── auth/ # Autenticación y autorización
│ ├── config/ # Configuración y base de datos
│ ├── models/ # Modelos de datos
│ ├── routers/ # Endpoints de la API
│ ├── schemas/ # Esquemas de validación
│ └── services/ # Servicios auxiliares
├── Test/ # Tests y scripts
│ ├── Auth/ # Tests de autenticación
│ ├── Endpoints/ # Tests de endpoints
│ └── Inits/ # Scripts de inicialización
├── Docs/ # Documentación
├── app.py # Aplicación principal
└── requirements.txt # Dependencias
- Sistema de Roles y Permisos: Documentación completa del sistema de roles
- API Endpoints: Documentación detallada de todos los endpoints
- Configuración: Guía de configuración
- Deployment: Guía de despliegue en Railway
# Configurar entorno de desarrollo
python Test/Inits/setup_environment.py development
# Configurar entorno de producción
python Test/Inits/setup_environment.py production
# Crear usuarios de prueba
python Test/Inits/init_database.py
# Limpiar base de datos
python Test/Inits/clean_database.py
# Ejecutar tests
pytest Test/ -v# Todos los tests
pytest Test/ -v
# Tests específicos
pytest Test/Auth/ -v
pytest Test/Endpoints/Public/ -vfeat:Nueva funcionalidadfix:Corrección de bugsdocs:Cambios en documentacióntest:Agregar o modificar testschore:Cambios en configuración o herramientas
main: Código de producciónrelease: Preparación para releasefeature: Nuevas funcionalidadesdevelopment: Desarrollo activo
# Configurar para producción
python Test/Inits/setup_environment.py production
# Desplegar
railway deploy# Construir imagen
docker build -t api-auth-gateway .
# Ejecutar contenedor
docker run -p 8000:8000 api-auth-gateway- Fork el proyecto
- Crear branch para feature (
git checkout -b feature/nueva-funcionalidad) - Commit cambios (
git commit -m 'feat: agregar nueva funcionalidad') - Push al branch (
git push origin feature/nueva-funcionalidad) - Crear Pull Request
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
Para soporte o preguntas:
- Revisar la documentación en
Docs/ - Verificar logs de la aplicación
- Crear un issue en el repositorio
- Contactar al equipo de desarrollo
- ✅ Sistema de roles personalizado (desarrolladora, editor, superadmin)
- ✅ Endpoints públicos para GET /videojuegos/*
- ✅ Validación de propiedad de recursos
- ✅ Manejo de errores mejorado
- ✅ Documentación completa
- ✅ Tests comprehensivos
- ✅ Scripts de inicialización actualizados
- ✅ Sistema básico de autenticación JWT
- ✅ Roles admin/user
- ✅ Endpoints básicos de videojuegos
- ✅ Integración con API Flask