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; ...@@ -2,6 +2,7 @@ package com.ujaen.tfg.mangaffinity.servicios;
import com.ujaen.tfg.mangaffinity.entidades.BibliotecaPersonal; import com.ujaen.tfg.mangaffinity.entidades.BibliotecaPersonal;
import com.ujaen.tfg.mangaffinity.entidades.Usuario; 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.NombreUsuarioYaCogido;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioNoExiste; import com.ujaen.tfg.mangaffinity.excepciones.UsuarioNoExiste;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioYaRegistrado; import com.ujaen.tfg.mangaffinity.excepciones.UsuarioYaRegistrado;
...@@ -55,8 +56,21 @@ public class ServicioUsuarios { ...@@ -55,8 +56,21 @@ public class ServicioUsuarios {
* @return DTOLoginRespuesta con el token, email y nombre de usuario. * @return DTOLoginRespuesta con el token, email y nombre de usuario.
* @throws UsuarioYaRegistrado Si el email ya está registrado o es del admin. * @throws UsuarioYaRegistrado Si el email ya está registrado o es del admin.
* @throws NombreUsuarioYaCogido Si el nombre de usuario ya está en uso. * @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) { 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())); usuario.setContrasenia(passwordEncoder.encode(usuario.getContrasenia()));
if (usuario.getEmail().equalsIgnoreCase(admin.getEmail())) throw new UsuarioYaRegistrado(); if (usuario.getEmail().equalsIgnoreCase(admin.getEmail())) throw new UsuarioYaRegistrado();
...@@ -152,6 +166,7 @@ public class ServicioUsuarios { ...@@ -152,6 +166,7 @@ public class ServicioUsuarios {
* @throws UsuarioYaRegistrado Si el nuevo email ya está en uso por otro usuario. * @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 NombreUsuarioYaCogido Si el nuevo nombre de usuario ya está en uso.
* @throws IllegalArgumentException Si la contraseña actual es incorrecta. * @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) { public DTOLoginRespuesta modificarUsuario(String emailActual, String nuevoEmail, String nuevoNombreUsuario, String nuevaContrasenia, String contraseniaActual) {
Usuario usuario = repositorioUsuario.findByEmail(emailActual) Usuario usuario = repositorioUsuario.findByEmail(emailActual)
...@@ -183,9 +198,19 @@ public class ServicioUsuarios { ...@@ -183,9 +198,19 @@ public class ServicioUsuarios {
usuario.setNombreUsuario(nuevoNombreUsuario); usuario.setNombreUsuario(nuevoNombreUsuario);
if (nuevaContrasenia != null && !nuevaContrasenia.isBlank()) { 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.setContrasenia(passwordEncoder.encode(nuevaContrasenia));
} }
usuario = repositorioUsuario.actualizar(usuario); usuario = repositorioUsuario.actualizar(usuario);
// Generar nuevo token // 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