Skip to content

Microservicio usuario que administra los roles de los usuarios de la plaza de comidas

Notifications You must be signed in to change notification settings

JaiderMartinez/power_up_v2_usuarios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Plaza de comidas

Microservicio Usuario

Logo Java

Logo Mysql

Logo Swagger

Logo Spring Security

Amazon RDS MariaDB

Encargado de administrar los roles, creacion de cuentas y login de los usuarios de la plaza de comidas.

Descripción del proyecto

Para el inicio de sesion nos autenticamos con nuestro email y password. como resultado obtenemos un token donde contiene nuestro email, rol, nombre y apellido. Que usaremos para cada peticion

{
    "email" : String,
    "password" : String
}

Se usa Bcrypt para la encriptacion del password. Para la creacion de una cuenta como CLIENTE no se necesita ingresar el token.

{
    "name" : String,
    "lastName" : String,
    "identificationDocument" : Long,
    "cellPhone" : String,
    "email" : String,
    "password" : String,
    "idRol" : Long
}

Pero para la creacion de cuentas para un propietario de un restaurante se debe tener un rol de ADMINISTRADOR y haberse logeado e ingresado el token en el header de la peticion.

{
    "name" : String,
    "lastName" : String,
    "identificationDocument" : Long,
    "cellPhone" : String,
    "email" : String,
    "password" : String,
}

Para crear cuentas para los empleados de los restaurantes, se requiere un rol de PROPIETARIO y un token válido. Es necesario que el restaurante ya haya sido creado previamente. Se utiliza WebClient para consumir un servicio REST que guarda el id del restaurante y el id del empleado en la tabla "restaurante_empleado" de la DB plazoleta. El email se obtiene del token y se utiliza para buscar la información del usuario propietario. Luego se envían en el cuerpo de la peticion los id para obtener el restaurante asociado al propietario y se guarda el registro en la DB(DataBase).

tabla del restaurante_empleado
id_restaurante_empleado: llave primaria de la tabla.
id_restaurante: campo que especifica a que restaurante pertenece.
id_usuario_empleado: campo que funcionara como llave foranea a la tabla usuarios.

{
    "name" : String,
    "lastName" : String,
    "identificationDocument" : Long,
    "cellPhone" : String,
    "email" : String,
    "password" : String,
    "idRol" : Long,
    "idRestaurant" : Long
}

Requisitos previos

  • Java 8 o superior
  • Gradle - Groovy
  • Instancia del servicio de RDS de AWS

Funcionalidades

  • Historia de usuario 1: Crear Propietario
  • Historia de usuario 6: Crear cuenta empleado
  • Historia de usuario 8: Crear cuenta Cliente

Configuración de la instancia de RDS de MariaDB

Para utilizar el microservicio Usuario, es necesario configurar y tener acceso a una instancia de Amazon RDS con una base de datos MariaDB. A continuación, se detallan los pasos para configurar la instancia:

  • Creación de la instancia de RDS de MariaDB
  • Obtención de los detalles de conexión
  • Obtención de los detalles de conexión
  • Configuración en el microservicio Usuario:
  • Actualiza la configuración de la base de datos con los detalles de conexión de tu instancia de RDS:
    spring.datasource.url=jdbc:mysql://<endpoint-de-rds>:<puerto>/<nombre-database>
    spring.datasource.username=<usuario-de-la-database>
    spring.datasource.password=<contraseña>    
    

Spring Security

La API está protegida mediante Spring Security y el control de acceso basado en roles.

  • Url de swagger: http://localhost:8090/swagger-ui/index.html
  • Url para el login: localhost:8090/user-micro/auth/login como resultado me devuelve un access token
  • access.token.validity.seconds=<duracion-expiración-token>
    access.token.secret=<clave-secreta>    
    

    Generación de tokens

    Cuando un usuario inicia sesión correctamente, se genera un token de acceso que contiene la información de autenticación y autorización necesaria para realizar solicitudes posteriores. El token se genera utilizando el algoritmo de firma JSON Web Tokens (JWT) y se firma con una clave secreta compartida.

    El token contiene la siguiente información:

    Subject (sub): Email único del usuario autenticado.
    Roles (rol): Los roles asignados al usuario, que determinan sus permisos en la aplicación.
    Fecha de expiración (exp): La fecha y hora en la que el token expirará y ya no será válido.
    Name: nombre del usuario autenticado
    LastName: Apellido del usuario autenticado.

    🛠️ Abre y ejecuta el proyecto

    • Diagramas de wireframes, Url: create account user
    • Url para crear usuario con rol de cliente: localhost:8090/user-micro/user/customer
    • Url para crear usuario con rol de propietario: localhost:8090/user-micro/user/owner tener en cuenta que para crear esta cuenta necesito haberme autenticado y tener el rol de ADMINISTRADOR e ingresar el token en el header
    • Url para crear usuario con rol de empleado: localhost:8090/user-micro/user/employee tener en cuenta que para crear esta cuenta necesito haberme autenticado y tener el rol de PROPIETARIO e ingresar el token en el header

    Siguiente Microservicio Plazoleta

    About

    Microservicio usuario que administra los roles de los usuarios de la plaza de comidas

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Languages