API REST segura para gestión de usuarios, autenticación, autorización por roles y protección de endpoints mediante JWT.
- Java 21
- Spring Boot 3
- Spring Security
- JWT
- PostgreSQL
- Docker
- Spring Data JPA
- Hibernate
- Lombok
- Validation
- Swagger/OpenAPI
- JUnit 5
- Mockito
- Maven
- Registro de usuarios
- Login con JWT
- Generación de token Bearer
- Protección de rutas
- Roles ADMIN, USER y SUPPORT
- CRUD de usuarios
- Activar y desactivar usuarios
- Validaciones
- Manejo global de excepciones
- Documentación Swagger
- Tests unitarios
El proyecto está organizado en los siguientes paquetes principales:
configcontrollerdtoentityexceptionrepositorysecurityservice
POST /api/auth/registerPOST /api/auth/loginGET /api/usersGET /api/users/{id}GET /api/users/activePUT /api/users/{id}PATCH /api/users/{id}/disablePATCH /api/users/{id}/enableGET /api/admin/dashboardGET /api/support/panelGET /api/test
- Clonar el repositorio:
git clone <repository-url>
cd secure-user-management-api- Levantar PostgreSQL con Docker:
docker compose up -d- Ejecutar Spring Boot:
./mvnw spring-boot:run- En Windows:
.\mvnw spring-boot:runAsegúrate de tener PostgreSQL configurado con los siguientes parámetros:
- database:
secure_users_db - user:
postgres - password:
postgres - port:
5432
- Registrar un usuario:
curl -X POST http://localhost:8080/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"username": "user1",
"email": "user1@example.com",
"password": "Password123",
"role": "USER"
}'- Iniciar sesión:
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"username": "user1",
"password": "Password123"
}'La respuesta incluirá un token JWT que se debe usar en las solicitudes protegidas.
Incluye el token en el encabezado Authorization de tus peticiones:
Authorization: Bearer TOKENLa documentación Swagger está disponible en:
http://localhost:8080/swagger-ui/index.html
Ejecutar pruebas unitarias con:
./mvnw testEjecutar build completo con pruebas:
./mvnw clean install- Brayan Jair Chavez Oscor
- GitHub: https://github.com/Brayan1262
- LinkedIn: https://www.linkedin.com/in/brayan-chavez-218088334/
- Portafolio: https://brayan1262.github.io/portafolio-brayan/
- Refresh token
- Recuperación de contraseña
- Auditoría
- Logs
- Dockerización completa de la app + base de datos
- Deploy