Files
proyecto-final/docs/views/cambiar_contrasena.md
T

48 lines
1.5 KiB
Markdown

# `cambiar_contrasena`
**Archivo:** `tienda/views.py`
**URL:** `/tienda/usuario/cambiar-contrasena/`
**Tipo:** Vista privada (requiere autenticación)
**Método HTTP:** Solo `POST`
**Decorador:** `@login_required`
## Descripción
Cambia la contraseña del usuario autenticado tras verificar la contraseña actual.
- Verifica que la contraseña actual sea correcta.
- Comprueba que la nueva contraseña y su confirmación coincidan.
- Valida que la nueva contraseña tenga al menos 8 caracteres.
- Establece la nueva contraseña y vuelve a iniciar sesión para mantener la sesión activa.
## Firma
```python
def cambiar_contrasena(request: HttpRequest):
```
## Parámetros
| Nombre | Tipo | Descripción |
|-----------|---------------|-----------------------|
| `request` | `HttpRequest` | Petición HTTP de Django. |
## Campos del formulario POST
| Campo | Descripción |
|--------------------|--------------------------------------|
| `current_password` | Contraseña actual del usuario. |
| `new_password` | Nueva contraseña (mínimo 8 caracteres). |
| `confirm_password` | Confirmación de la nueva contraseña. |
## Redirecciones
| Caso | Destino |
|--------|------------------|
| Éxito | `portal_usuario` |
| Error | Template `tienda/editar_perfil.html` |
| GET | `editar_perfil` |
> [!NOTE]
> Tras cambiar la contraseña se llama a `auth_login` para re-autenticar al usuario y evitar que la sesión quede invalidada.