Encargado de administrar los roles, creacion de cuentas y login de los usuarios de la plaza de comidas.
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).
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
}
- Java 8 o superior
- Gradle - Groovy
- Instancia del servicio de RDS de AWS
Historia de usuario 1
: Crear PropietarioHistoria de usuario 6
: Crear cuenta empleadoHistoria de usuario 8
: Crear cuenta Cliente
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>
La API está protegida mediante Spring Security y el control de acceso basado en roles.
access.token.validity.seconds=<duracion-expiración-token>
access.token.secret=<clave-secreta>
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.
- 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