https://github.com/luiggi-piero/roles-prueba
Backend para el manejo de roles
https://github.com/luiggi-piero/roles-prueba
auth0 java-17 mysql spring-boot spring-security
Last synced: 3 months ago
JSON representation
Backend para el manejo de roles
- Host: GitHub
- URL: https://github.com/luiggi-piero/roles-prueba
- Owner: Luiggi-piero
- Created: 2025-06-15T18:14:41.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-28T21:37:26.000Z (about 1 year ago)
- Last Synced: 2025-07-20T09:48:22.374Z (12 months ago)
- Topics: auth0, java-17, mysql, spring-boot, spring-security
- Language: Java
- Homepage:
- Size: 31.3 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
##
ROLES PRUEBA
API Rest desarrollada en Java con Spring Boot para la gestión de usuarios(login y registro) y roles.
## Índice
1. [Funcionalidades](#Funcionalidades)
2. [Requerimientos previos](#requerimientos-previos)
3. [Configuración](#configuración)
4. [Tecnologías utilizadas](#tecnologías-utilizadas)
5. [Estructura del proyecto](#estructura-del-proyecto)
6. [Diagrama entidad-relación](#diagrama-entidad-relación)
## Funcionalidades
- [x] Autenticación de usuarios con JWT y Spring Security
- `POST /login` : Inicia sesión y obtiene un Token JWT.
- [x] Registro de un nuevo usuario
- Endpoints
* `POST /users/register` : Crea un nuevo usuario con el rol USER
- Reglas de negocio
* Todos los campos son obligatorios, por lo tanto, es necesario verificar si todos los campos se están ingresando correctamente.
* La API no debe permitir el registro de usuarios duplicados (con el mismo correo) y debe tener al menos un número y una letra mayúscula.
* Asignar el rol USER por defecto
- [x] Mostrar usuarios
- Endpoints
* `GET /users` : Muestra todos los usuarios
- Reglas de negocio
* Retornar los primeros 10 resultados ordenados por id
* Devolver todos los atributos menos la contraseña
* Obtener la respuesta con paginación para controlar el volumen de los datos
* Solo el rol ADMIN puede obtener todos los usuarios
## Requerimientos previos
- **JDK: Java 17 o superior**
- **Gestor de dependencias: Maven 4.0.0**
- **Spring Boot 3.5.0**
- **Base de datos MySQ o PostgreSQL (cambiar la configuración de application.properties)**
## Configuración
1. Clona el repositorio
```bash
git clone https://github.com/Luiggi-piero/roles-prueba.git
cd roles-prueba
2. Configura las variables de entorno para la conexión a la base de datos
```yaml
spring.application.name=rolesprueba
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/rolesprueba?useSSL=false&serverTimezone=UTC
#conexion con postgresql
#spring.datasource.url=jdbc:postgresql://localhost:5432/rolesprueba
#spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}
api.security.secret=${JWT_SECRET}
3. Crea un base de datos vacía con el nombre rolesprueba
4. Ejecuta el proyecto
5. La aplicación estará disponible en: http://localhost:8080
## Tecnologías utilizadas
- **Spring Boot**: Desarrollo rápido y robusto de aplicaciones.
- **Spring Security y JWT**: Autenticación segura.
- **MySQL y postgreSQL**: Sistema de gestión de bases de datos relacional.
## Estructura del proyecto
Arquitectura multicapas
src
├── main
│ ├── java/com/kronos/roles-prueba
│ │ ├── controller -> REST controllers.
│ │ ├── dto -> Data transfer object layer.
│ │ ├── model -> Domain feature layer.
│ │ ├── repository -> Data persistence layer.
│ │ ├── service -> Business logic layer.
│ │ ├── infra -> Error handlers, security and docs.
│ └── resources
│ └── application.properties -> Configuration app.
└──
## Diagrama Entidad Relación

> [!IMPORTANT]
> * Con sql crea los roles: ADMIN, USER y MENTOR en la tabla roles
> * Cambia a enabled 1 todos los roles
> * Registra un usuario
> * Modifica la tabla users_roles: agrega un registro para asignar al usuario creado el rol ADMIN
> * Agrega la configuración de la bd en application.properties
> * Para aquellos que no tienen la zona horaria GMT-5 modificar el archivo ...TokenService (para indicar la expiraición del token)