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; ...@@ -2,6 +2,7 @@ package com.ujaen.tfg.mangaffinity.rest;
import com.ujaen.tfg.mangaffinity.entidades.Usuario; import com.ujaen.tfg.mangaffinity.entidades.Usuario;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioYaRegistrado; 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.DTOUsuario;
import com.ujaen.tfg.mangaffinity.rest.DTO.Mapper; import com.ujaen.tfg.mangaffinity.rest.DTO.Mapper;
import com.ujaen.tfg.mangaffinity.seguridad.JwtUtil; import com.ujaen.tfg.mangaffinity.seguridad.JwtUtil;
...@@ -13,6 +14,8 @@ import org.springframework.http.HttpStatus; ...@@ -13,6 +14,8 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController @RestController
@RequestMapping("/usuarios") @RequestMapping("/usuarios")
public class UsuariosController { public class UsuariosController {
...@@ -37,4 +40,18 @@ public class UsuariosController { ...@@ -37,4 +40,18 @@ public class UsuariosController {
return ResponseEntity.status(HttpStatus.CONFLICT).build(); 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 { ...@@ -23,11 +23,13 @@ public class ServicioSeguridad {
.sessionManagement(session -> session.disable()) .sessionManagement(session -> session.disable())
.httpBasic(httpBasic -> httpBasic.realmName("mangaffinity")) .httpBasic(httpBasic -> httpBasic.realmName("mangaffinity"))
.authorizeHttpRequests(request -> request .authorizeHttpRequests(request -> request
.requestMatchers(HttpMethod.POST, "/usuarios/{email}").permitAll()
.requestMatchers(HttpMethod.POST, "/usuarios/").permitAll() .requestMatchers(HttpMethod.POST, "/usuarios/").permitAll()
) )
.build(); .build();
} }
@Bean @Bean
public PasswordEncoder passwordEncoder() { public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(); return new BCryptPasswordEncoder();
......
...@@ -19,10 +19,8 @@ import org.springframework.boot.test.context.SpringBootTest; ...@@ -19,10 +19,8 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ActiveProfiles;
import javax.crypto.SecretKey; 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.Assertions.assertThatThrownBy;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
...@@ -35,25 +33,10 @@ public class TestServicioUsuarios { ...@@ -35,25 +33,10 @@ public class TestServicioUsuarios {
ServicioUsuarios servicioUsuarios; ServicioUsuarios servicioUsuarios;
@Autowired @Autowired
private PasswordEncoder passwordEncoder;
@Autowired
JwtUtil jwtUtil; JwtUtil jwtUtil;
private static final Logger logger = LoggerFactory.getLogger(TestServicioUsuarios.class); 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 @Test
@DirtiesContext @DirtiesContext
void testCrearSocio(){ 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