Commit 9d3ca8fd by Adrian

Añadido edición de detalles de usuario, falta comprobaciones de datos

parent ada5d79e
...@@ -15,13 +15,12 @@ import java.util.List; ...@@ -15,13 +15,12 @@ import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
...@@ -69,6 +68,32 @@ public class ServicioRestAPI { ...@@ -69,6 +68,32 @@ public class ServicioRestAPI {
return new ResponseEntity<>(mapper.aClienteDTO(cliente), HttpStatus.OK); return new ResponseEntity<>(mapper.aClienteDTO(cliente), HttpStatus.OK);
} }
@PutMapping("/clientes/{dni}")
public ResponseEntity<ClienteDTO> actualizarDetalleCliente(@PathVariable String dni,@RequestBody ClienteDTO cliente) {
if (dni != null && "".equals(dni)) {
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
String username = SecurityContextHolder.getContext().getAuthentication().getName();
boolean admin = SecurityContextHolder.getContext().getAuthentication().getAuthorities()
.stream().anyMatch(r -> r.getAuthority().equals("ROLE_ADMIN"));
if (!admin && !username.equals(dni)) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
if(!username.equals(cliente.getDni())){
return new ResponseEntity<>(HttpStatus.FORBIDDEN);
}
//Comprobar datos entrantes
ujaBank.actualizarCliente(mapper.deClienteDTO(cliente));
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/clientes/{dni}/cuentas/{num}") @GetMapping("/clientes/{dni}/cuentas/{num}")
public ResponseEntity<CuentaDTO> detalleCuenta(@PathVariable String dni, @PathVariable String num) { public ResponseEntity<CuentaDTO> detalleCuenta(@PathVariable String dni, @PathVariable String num) {
......
...@@ -14,7 +14,6 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity; ...@@ -14,7 +14,6 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.password.NoOpPasswordEncoder; import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
/** /**
* *
...@@ -49,6 +48,9 @@ public class ServicioSeguridad extends WebSecurityConfigurerAdapter { ...@@ -49,6 +48,9 @@ public class ServicioSeguridad extends WebSecurityConfigurerAdapter {
http.authorizeRequests().antMatchers(HttpMethod.DELETE, "/ujacoin/clientes/{dni:[\\d+]}/cuentas/{num:[\\d+]}").hasRole("ADMIN"); http.authorizeRequests().antMatchers(HttpMethod.DELETE, "/ujacoin/clientes/{dni:[\\d+]}/cuentas/{num:[\\d+]}").hasRole("ADMIN");
http.authorizeRequests().antMatchers("/ujacoin/clientes/**").hasAnyRole("USER","ADMIN"); http.authorizeRequests().antMatchers("/ujacoin/clientes/**").hasAnyRole("USER","ADMIN");
http.authorizeRequests().antMatchers(HttpMethod.POST, "/ujacoin/clientes/**").hasAnyRole("USER","ADMIN");
http.authorizeRequests().antMatchers(HttpMethod.PUT, "/ujacoin/clientes/**").hasAnyRole("USER","ADMIN");
http.authorizeRequests().antMatchers(HttpMethod.DELETE, "/ujacoin/clientes/**").hasAnyRole("USER","ADMIN");
http.authorizeRequests().antMatchers("/ujacoin/enteros/**").permitAll(); http.authorizeRequests().antMatchers("/ujacoin/enteros/**").permitAll();
......
...@@ -225,4 +225,19 @@ public class ServicioUjaBankImpl implements ServicioUjaBank { ...@@ -225,4 +225,19 @@ public class ServicioUjaBankImpl implements ServicioUjaBank {
} }
@Override
public Cliente actualizarCliente(Cliente clienteNuevo) {
Cliente clienteAntiguo = repoClientes.buscar(clienteNuevo.getDni());
clienteAntiguo.setDireccion(clienteNuevo.getDireccion());
clienteAntiguo.setEmail(clienteNuevo.getEmail());
clienteAntiguo.setTelefono(clienteNuevo.getTelefono());
repoClientes.actualizar(clienteAntiguo);
return clienteAntiguo;
}
} }
...@@ -118,6 +118,18 @@ public class Cliente { ...@@ -118,6 +118,18 @@ public class Cliente {
return tarjetasAsociadas; return tarjetasAsociadas;
} }
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public void setEmail(String email) {
this.email = email;
}
/** /**
* Comprueba si la clave introducida coincide con la guardada * Comprueba si la clave introducida coincide con la guardada
* *
......
...@@ -122,4 +122,11 @@ public interface ServicioUjaBank { ...@@ -122,4 +122,11 @@ public interface ServicioUjaBank {
*/ */
public void borrarTarjeta(int identificador); public void borrarTarjeta(int identificador);
/**
* Actualiza los datos personales de un cliente
* @param clienteNuevo Cliente para actualizar
* @return El cliente actualizado
*/
public Cliente actualizarCliente(Cliente clienteNuevo);
} }
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