Añado un sistema de verificación de contraseñas, las clases de excepción nuevas…

Añado un sistema de verificación de contraseñas, las clases de excepción nuevas y comienzo la implementación del servicio.
parent ab19cd71
......@@ -21,6 +21,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
......
......@@ -41,6 +41,7 @@ public class Usuario {
private int telefono;
@NotNull
@Pattern(regexp= ExprReg.EMAIL)
private String email;
......
package com.carpooling.carpoolingaoraha.excepciones;
public class ReservaYaRegistrado extends RuntimeException{
public ReservaYaRegistrado(){}
}
package com.carpooling.carpoolingaoraha.excepciones;
public class UsuarioYaRegistrado extends RuntimeException{
public UsuarioYaRegistrado(){}
}
package com.carpooling.carpoolingaoraha.excepciones;
public class ViajeYaRegistrado extends RuntimeException{
public ViajeYaRegistrado(){}
}
package com.carpooling.carpoolingaoraha.services;
import com.carpooling.carpoolingaoraha.entidades.Reserva;
import com.carpooling.carpoolingaoraha.entidades.Usuario;
import com.carpooling.carpoolingaoraha.excepciones.UsuarioYaRegistrado;
import com.carpooling.carpoolingaoraha.repositorios.ReservaRepository;
import com.carpooling.carpoolingaoraha.repositorios.UsuarioRepository;
import com.carpooling.carpoolingaoraha.repositorios.ViajeRepository;
import jakarta.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Optional;
@Service
@Validated
public class ServicioCarPooling {
@Autowired
ReservaRepository repositorioReservas;
@Autowired
ViajeRepository repositorioViajes;
@Autowired
UsuarioRepository repositorioUsuario;
@Autowired
CacheManager cacheManager;
public ServicioCarPooling() {
}
//AltaViaje???
public Usuario altaCliente(@NotNull @Valid Usuario usuario) {
Optional<Usuario> test = repositorioUsuario.buscar(usuario.getDNI());
if (test.isPresent()) {
throw new UsuarioYaRegistrado();
}
repositorioUsuario.guardar(usuario);
return usuario;
}
@Transactional
public Optional<Usuario> loginUsuario(@NotBlank String dni, @NotBlank String clave) {
Optional<Usuario> usuarioLogin = repositorioUsuario.buscar(dni)
.filter((usuario) -> usuario.claveValida(clave));
// Asegurarnos de que se devuelve el cliente con los datos precargados
//usuarioLogin.ifPresent(u -> u.verCuentas().size());
return usuarioLogin;
}
@Transactional
public Optional<Usuario> verUsuario(@NotBlank String dni) {
Optional<Usuario> usuarioLogin = repositorioUsuario.buscar(dni);
// Asegurarnos de que se devuelve el cliente con los datos precargados
//clienteLogin.ifPresent(c -> c.verCuentas().size());
return usuarioLogin;
}
@CacheEvict(value="clientes", key = "#dni")
public Reserva crearReserva(@NotBlank String dni) {
Cliente cliente = repositorioClientes.buscar(dni).orElseThrow(ClienteNoRegistrado::new);
Cuenta cuenta = crearCuenta(cliente);
repositorioCuentas.guardar(cuenta);
return cuenta;
}
}
package com.carpooling.carpoolingaoraha.utils;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
public class CodificadorPassword {
static BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
private CodificadorPassword() {
}
public static String codificar(String cadena) {
return encoder.encode(cadena);
}
public static boolean igual(String password, String passwordCodificado) {
return encoder.matches(password, passwordCodificado);
}
}
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