Una parte importante cuando se maneja usuarios es poder actualizar sus credenciales (password). No es recomendable ponerlo en el formulario normal para no tener que actualizar el password cada vez que quieras actualizar cualquier informacion del usuario.
Algo recomendado es que obligar al usuario a ingresar su password actual para poder actualizarlo a uno nuevo. Cuando agreguemos Roles dejaremos que el Admin le cambie el password a cualquier usuario con rol User, empezamos.
En esta parte utilizaremos AJAX, para que aprendas como hacer llamados asíncronos utilizando JSON.
Contenido
- Crear Controlador y POJO.
- Crear Formulario Popup (HTML).
- Crear Servicio.
- Retornar JSON Response.
- Commit Git.
- Video Paso a Paso.
1.Crear Controlador y POJO
Crearemos un Java POJO que contendra el id del usuario y el actual y nuevo password, ademas tendremos que retornar ese nuevo pojo en los controladores que tengamos para edicion de usuario.
ChangePasswordForm.java
UserController.java
Busca los siguientes metodos y agrega la liena del atributo “passwordForm”
2.Crear Formulario Popup
Crea un nuevo archivo “change-password.html” en la carpeta user-form.
user-view.html
user-form.html
En la seccion de los botones al final del archivo, pon la siguiente linea entre el boton de cancelar y guardar
Inicial tu aplicacion y selecciona un usuario para editar, click en el boton de cambiar password y deberias de tener lo siguient
3.Crear Servicio.
UserService.java
UserServiceImpl.java
4.Retornar JSON Response.
Para poder entregar una respuesta asíncrona, utilizaremos como objeto de retorno ResponseEntity<?>, al cual le podremos asignar codigo http de respuesta y un mensaje.
Ademas recibiremos el formulario con la anotacion @RequestBody, indicando que la estructura del objeto ChangePasswordForm esta dentro de request.
Si ocurre algun error cambiando el password o si tiene algun error identificado por la anotacion @Valid, lo concatenamos en un string y lo resgresamos en el cuerpo de un bad request
UserController.java
5.Git Commit
Una vez tengas todo andando y funcionando, cambia la clave de un usuario y verifica en la base de datos que se haya cambiado correctamente.
Github commit:
https://github.com/cruizg93/Spring-Boot-Aplicacion/commit/afbf614cf1860f8405ba4e43a62909c4d9745257
6.Video Paso a Paso.
Menu
- Setup
- Entidades y POJOS
- Basic HTML
- Lista de Usuarios
- Crear Usuario y Validar Campos
- Editar Usuario
- Eliminar Usuario
- Cambiar Contraseña
- Spring Security
- Paginas de Error
- Bonus, Arreglando Cositas
- Formulario de registro
- Despliegue en Heroku
Gracias por llegar al final de este post.
No se te olvide dejar tus comentario o preguntas aca abajo o en mi twitter @Cruizg93
Hola tengo este error ya valide los nombres en el modal y en el controlador
status”:403,”error”:”Forbidden”,”message”:”Forbidden”,”path”:”/editUser/changePassword”}
$.ajax({
type: “POST”,
contentType: “application/json”,
url: “/editUser/changePassword”,
data: JSON.stringify(params),
Controlador
@PostMapping(“/editUser/changePassword”)
public ResponseEntity postEditUseChangePassword(@Valid @RequestBody ChangePasswordForm form, Errors errors) {
try {
El error 403, es un error de seguridad, significa que tu no tienes acceso a esa url, puede ser por permiso de roles o porque tu usuario no es valido en el contexto de seguridad. Intenta cerrar sesión e intenta volver a cambiar la contraseña.
Si compartes tu codigo podria darle una mirada.
ok, muchas gracias revisare y te comento…