Commit 154662c9 by Rubén Ramírez

fix: [Usuarios]: Corregidos problemas con los roles

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