Commit bd99341a by Rubén Ramírez

feat: [UsuariosController]: Implementada la función de inicio de sesión en el controlador

parent 72f0cf4d
......@@ -2,6 +2,7 @@ package com.ujaen.tfg.mangaffinity.rest;
import com.ujaen.tfg.mangaffinity.entidades.Usuario;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioYaRegistrado;
import com.ujaen.tfg.mangaffinity.rest.DTO.DTOLoginRespuesta;
import com.ujaen.tfg.mangaffinity.rest.DTO.DTOUsuario;
import com.ujaen.tfg.mangaffinity.rest.DTO.Mapper;
import com.ujaen.tfg.mangaffinity.seguridad.JwtUtil;
......@@ -13,6 +14,8 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController
@RequestMapping("/usuarios")
public class UsuariosController {
......@@ -37,4 +40,18 @@ public class UsuariosController {
return ResponseEntity.status(HttpStatus.CONFLICT).build();
}
}
@PostMapping("/{email}")
public ResponseEntity<?> iniciarSesion(@PathVariable String email, @RequestBody Map<String, String> clave) {
String contrasenia = clave.get("clave");
DTOLoginRespuesta respuesta = servicioUsuarios.autenticarUsuario(email, contrasenia);
if (respuesta == null) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Credenciales incorrectas");
}
return ResponseEntity.ok(respuesta);
}
}
......@@ -23,11 +23,13 @@ public class ServicioSeguridad {
.sessionManagement(session -> session.disable())
.httpBasic(httpBasic -> httpBasic.realmName("mangaffinity"))
.authorizeHttpRequests(request -> request
.requestMatchers(HttpMethod.POST, "/usuarios/{email}").permitAll()
.requestMatchers(HttpMethod.POST, "/usuarios/").permitAll()
)
.build();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
......
......@@ -19,10 +19,8 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
import javax.crypto.SecretKey;
import java.nio.charset.StandardCharsets;
import java.security.Key;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
......@@ -35,25 +33,10 @@ public class TestServicioUsuarios {
ServicioUsuarios servicioUsuarios;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
JwtUtil jwtUtil;
private static final Logger logger = LoggerFactory.getLogger(TestServicioUsuarios.class);
private static final SecretKey key = Keys.secretKeyFor(SignatureAlgorithm.HS256); // Clave de 256 bits
private Claims decodeJWT(String token) {
return Jwts.parserBuilder()
.setSigningKey(key) // Usando la misma clave
.build()
.parseClaimsJws(token)
.getBody();
}
@Test
@DirtiesContext
void testCrearSocio(){
......
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