Commit 154662c9 by Rubén Ramírez

fix: [Usuarios]: Corregidos problemas con los roles

parent 6a267025
......@@ -40,11 +40,11 @@ public class Usuario {
@OneToOne(mappedBy = "usuario", cascade = CascadeType.ALL)
private Repositorio repositorio;
public Usuario(String email, String nombreUsuario, String contrasenia, String rol) {
public Usuario(String email, String nombreUsuario, String contrasenia) {
this.email = email;
this.nombreUsuario = nombreUsuario;
this.contrasenia = contrasenia;
this.rol = rol;
this.rol = "USUARIO_REGISTRADO";
this.repositorio = new Repositorio(this);
}
......
package com.ujaen.tfg.mangaffinity.rest.DTO;
package com.ujaen.tfg.mangaffinity.rest.DTO;
import com.ujaen.tfg.mangaffinity.entidades.Recurso;
import com.ujaen.tfg.mangaffinity.entidades.Usuario;
import org.springframework.stereotype.Service;
import com.ujaen.tfg.mangaffinity.entidades.Recurso;
import com.ujaen.tfg.mangaffinity.entidades.Usuario;
import org.springframework.stereotype.Service;
@Service
public class Mapper {
@Service
public class Mapper {
public DTOUsuario dto(Usuario usuario) {
return new DTOUsuario(usuario.getId(), usuario.getEmail(), usuario.getNombreUsuario(), usuario.getContrasenia());
}
public DTOUsuario dto(Usuario usuario) {
return new DTOUsuario(usuario.getId(), usuario.getEmail(), usuario.getNombreUsuario(), usuario.getContrasenia());
}
public Usuario entity(DTOUsuario dtoUsuario) {
String rol = dtoUsuario.getEmail().equalsIgnoreCase("admin@example.com") ? "ADMIN" : "USUARIO_REGISTRADO";
return new Usuario(dtoUsuario.getEmail(), dtoUsuario.getNombreUsuario(), dtoUsuario.getContrasenia(), rol);
}
public Usuario entity(DTOUsuario dtoUsuario) {
return new Usuario(dtoUsuario.getEmail(), dtoUsuario.getNombreUsuario(), dtoUsuario.getContrasenia());
}
public DTORecurso dto(Recurso recurso) {
return new DTORecurso(recurso.getId(), recurso.getTitulo(), recurso.getDescripcion(), recurso.getFechaPublicacion(), recurso.getAutor()
);
}
public DTORecurso dto(Recurso recurso) {
return new DTORecurso(recurso.getId(), recurso.getTitulo(), recurso.getDescripcion(), recurso.getFechaPublicacion(), recurso.getAutor()
);
}
public Recurso entity(DTORecurso dtoRecurso) {
return new Recurso(dtoRecurso.getTitulo(), dtoRecurso.getDescripcion(), dtoRecurso.getFechaPublicacion(), dtoRecurso.getAutor()
);
public Recurso entity(DTORecurso dtoRecurso) {
return new Recurso(dtoRecurso.getTitulo(), dtoRecurso.getDescripcion(), dtoRecurso.getFechaPublicacion(), dtoRecurso.getAutor()
);
}
}
}
......@@ -2,10 +2,12 @@ package com.ujaen.tfg.mangaffinity.servicios;
import com.ujaen.tfg.mangaffinity.entidades.Usuario;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioNoExiste;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioYaRegistrado;
import com.ujaen.tfg.mangaffinity.repositorios.RepositorioUsuario;
import com.ujaen.tfg.mangaffinity.rest.DTO.DTOLoginRespuesta;
import com.ujaen.tfg.mangaffinity.rest.DTO.DTOUsuario;
import com.ujaen.tfg.mangaffinity.seguridad.JwtUtil;
import jakarta.annotation.PostConstruct;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -35,12 +37,24 @@ public class ServicioUsuarios {
this.admin.setNombreUsuario("admin");
}
@PostConstruct
public void initAdmin() {
if (admin.getContrasenia() == null) {
admin.setContrasenia(passwordEncoder.encode("adminpassword"));
}
}
/**
* Función para crear un Socio en la estructura
* @param usuario usuario que se va a añadir
*/
public void crearUsuario(@Valid Usuario usuario) {
usuario.setContrasenia(passwordEncoder.encode(usuario.getContrasenia()));
if (usuario.getEmail().equalsIgnoreCase(admin.getEmail())) {
throw new UsuarioYaRegistrado(); // Evita que se cree otro admin accidentalmente
}
repositorioUsuario.guardar(usuario);
}
......@@ -62,7 +76,7 @@ public class ServicioUsuarios {
String rol = "USUARIO_REGISTRADO";
if (email.equals(admin.getEmail())) {
if (!passwordEncoder.matches(contrasenia, passwordEncoder.encode("adminpassword"))) {
if (!passwordEncoder.matches(contrasenia, admin.getContrasenia())) {
return null;
}
rol = "ADMIN";
......
......@@ -33,7 +33,7 @@ public class TestServicioUsuarios {
@Test
@DirtiesContext
void testCrearSocio() {
var usuario1 = new Usuario("pedro@gmail.com", "Pedro", "pedrito", "USUARIO_REGISTRADO"); // Se agrega el rol
var usuario1 = new Usuario("pedro@gmail.com", "Pedro", "pedrito"); // Se agrega el rol
servicioUsuarios.crearUsuario(usuario1);
assertThatThrownBy(() -> servicioUsuarios.crearUsuario(usuario1)).isInstanceOf(UsuarioYaRegistrado.class);
}
......@@ -53,7 +53,7 @@ public class TestServicioUsuarios {
assertThat(servicioUsuarios.autenticarUsuario(emailExistente, contraseniaIncorrecta)).isNull();
// Caso 3: Usuario con email y contraseña correctos
var usuario2 = new Usuario("pedra@gmail.com", "Pedra", "pedrito", "USUARIO_REGISTRADO"); // Se agrega el rol
var usuario2 = new Usuario("pedra@gmail.com", "Pedra", "pedrito"); // Se agrega el rol
servicioUsuarios.crearUsuario(usuario2);
Usuario usuarioGuardado = servicioUsuarios.buscaUsuario("pedra@gmail.com");
......
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