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;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
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.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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
......@@ -69,6 +68,32 @@ public class ServicioRestAPI {
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}")
public ResponseEntity<CuentaDTO> detalleCuenta(@PathVariable String dni, @PathVariable String num) {
......
......@@ -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.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
/**
*
......@@ -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("/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();
......
......@@ -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 {
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
*
......
......@@ -122,4 +122,11 @@ public interface ServicioUjaBank {
*/
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