Skip to content

Brayan1262/secure-user-management-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Secure User Management API

API REST segura para gestión de usuarios, autenticación, autorización por roles y protección de endpoints mediante JWT.

Tecnologías utilizadas

  • Java 21
  • Spring Boot 3
  • Spring Security
  • JWT
  • PostgreSQL
  • Docker
  • Spring Data JPA
  • Hibernate
  • Lombok
  • Validation
  • Swagger/OpenAPI
  • JUnit 5
  • Mockito
  • Maven

Funcionalidades

  • 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

Arquitectura del proyecto

El proyecto está organizado en los siguientes paquetes principales:

  • config
  • controller
  • dto
  • entity
  • exception
  • repository
  • security
  • service

Endpoints principales

  • POST /api/auth/register
  • POST /api/auth/login
  • GET /api/users
  • GET /api/users/{id}
  • GET /api/users/active
  • PUT /api/users/{id}
  • PATCH /api/users/{id}/disable
  • PATCH /api/users/{id}/enable
  • GET /api/admin/dashboard
  • GET /api/support/panel
  • GET /api/test

Cómo ejecutar el proyecto

  1. Clonar el repositorio:
git clone <repository-url>
cd secure-user-management-api
  1. Levantar PostgreSQL con Docker:
docker compose up -d
  1. Ejecutar Spring Boot:
./mvnw spring-boot:run
  1. En Windows:
.\mvnw spring-boot:run

Configuración de base de datos

Asegúrate de tener PostgreSQL configurado con los siguientes parámetros:

  • database: secure_users_db
  • user: postgres
  • password: postgres
  • port: 5432

Cómo probar login

  1. 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"
  }'
  1. 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.

Cómo usar el token

Incluye el token en el encabezado Authorization de tus peticiones:

Authorization: Bearer TOKEN

Swagger

La documentación Swagger está disponible en:

  • http://localhost:8080/swagger-ui/index.html

Tests

Ejecutar pruebas unitarias con:

./mvnw test

Ejecutar build completo con pruebas:

./mvnw clean install

Autor

Futuras mejoras

  • Refresh token
  • Recuperación de contraseña
  • Auditoría
  • Logs
  • Dockerización completa de la app + base de datos
  • Deploy

About

API REST segura para gestión de usuarios, roles y autenticación con JWT usando Java Spring Boot, PostgreSQL y Docker.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages