Commit 7d0bd97b by Rubén Ramírez

feat: [ServicioUsuarios]: Actualizadas las funciones de registro y modificación…

feat: [ServicioUsuarios]: Actualizadas las funciones de registro y modificación de datos con la comprobación de contraseña débil
parent 13fa7c7e
......@@ -2,6 +2,7 @@ package com.ujaen.tfg.mangaffinity.servicios;
import com.ujaen.tfg.mangaffinity.entidades.BibliotecaPersonal;
import com.ujaen.tfg.mangaffinity.entidades.Usuario;
import com.ujaen.tfg.mangaffinity.excepciones.ContrasenaDebil;
import com.ujaen.tfg.mangaffinity.excepciones.NombreUsuarioYaCogido;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioNoExiste;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioYaRegistrado;
......@@ -55,8 +56,21 @@ public class ServicioUsuarios {
* @return DTOLoginRespuesta con el token, email y nombre de usuario.
* @throws UsuarioYaRegistrado Si el email ya está registrado o es del admin.
* @throws NombreUsuarioYaCogido Si el nombre de usuario ya está en uso.
* @throws ContrasenaDebil Si la contraseña no cumple los requisitos mínimos (longitud, número, mayúscula, carácter especial).
*/
public DTOLoginRespuesta crearUsuario(Usuario usuario) {
if (!"ADMIN".equalsIgnoreCase(usuario.getRol())) {
String contrasenia = usuario.getContrasenia();
if (contrasenia.length() < 8 ||
!contrasenia.matches(".*\\d.*") ||
!contrasenia.matches(".*[A-Z].*") ||
!contrasenia.matches(".*[!@#$%^&*()_+\\-\\[\\]{};':\"\\\\|,.<>/?].*"))
{
throw new ContrasenaDebil();
}
}
usuario.setContrasenia(passwordEncoder.encode(usuario.getContrasenia()));
if (usuario.getEmail().equalsIgnoreCase(admin.getEmail())) throw new UsuarioYaRegistrado();
......@@ -152,6 +166,7 @@ public class ServicioUsuarios {
* @throws UsuarioYaRegistrado Si el nuevo email ya está en uso por otro usuario.
* @throws NombreUsuarioYaCogido Si el nuevo nombre de usuario ya está en uso.
* @throws IllegalArgumentException Si la contraseña actual es incorrecta.
* @throws ContrasenaDebil Si la contraseña no cumple los requisitos mínimos (longitud, número, mayúscula, carácter especial).
*/
public DTOLoginRespuesta modificarUsuario(String emailActual, String nuevoEmail, String nuevoNombreUsuario, String nuevaContrasenia, String contraseniaActual) {
Usuario usuario = repositorioUsuario.findByEmail(emailActual)
......@@ -183,9 +198,19 @@ public class ServicioUsuarios {
usuario.setNombreUsuario(nuevoNombreUsuario);
if (nuevaContrasenia != null && !nuevaContrasenia.isBlank()) {
if (!"ADMIN".equalsIgnoreCase(usuario.getRol())) {
if (nuevaContrasenia.length() < 8 ||
!nuevaContrasenia.matches(".*\\d.*") ||
!nuevaContrasenia.matches(".*[A-Z].*") ||
!nuevaContrasenia.matches(".*[!@#$%^&*()_+\\-\\[\\]{};':\"\\\\|,.<>/?].*")) {
throw new ContrasenaDebil();
}
}
usuario.setContrasenia(passwordEncoder.encode(nuevaContrasenia));
}
usuario = repositorioUsuario.actualizar(usuario);
// Generar nuevo token
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment