El módulo de gestión de usuarios permite a los administradores de Tienda MiCholo crear, visualizar, editar y eliminar cuentas del sistema. Está implementado enDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/interezante456-pixel/proyecto-dise-o/llms.txt
Use this file to discover all available pages before exploring further.
UsuarioController y protegido en su totalidad con [Authorize(Roles = "Admin")], lo que significa que ningún usuario con rol Vendedor —ni ningún visitante no autenticado— puede acceder a estas rutas. Toda la gestión de cuentas se realiza a través de ASP.NET Core Identity, usando UserManager<IdentityUser> y RoleManager<IdentityRole>.
Ver usuarios
La acciónGET /Usuario/Index recupera todos los usuarios registrados en el sistema y los presenta en una tabla. Por cada usuario se obtienen sus roles asociados y se construye un UsuarioVM con los siguientes campos:
| Campo | Tipo | Descripción |
|---|---|---|
Id | string | Identificador único de Identity |
Email | string | Correo electrónico del usuario |
Rol | string | Nombre del rol asignado, o "Sin Rol" si no tiene ninguno |
Rol mostrará el texto “Sin Rol” de forma predeterminada.
Crear usuario
Para registrar una nueva cuenta de usuario en el sistema, sigue estos pasos:Navega al formulario de creación
Dirígete a
/Usuario/Crear. La página cargará el formulario con la lista de roles disponibles en el sistema.Completa el formulario
Rellena todos los campos requeridos según el modelo
CrearUsuarioVM:| Campo | Validación | Descripción |
|---|---|---|
| Correo Electrónico | Requerido, formato de email válido | Será el UserName e Email de la cuenta en Identity |
| Contraseña | Requerida, mínimo 6 caracteres, máximo 100 | Contraseña inicial de la cuenta |
| Confirmar contraseña | Debe coincidir con el campo Contraseña | Confirmación para evitar errores tipográficos |
| Rol | Requerido | Seleccionado desde los roles disponibles en la base de datos |
Envía el formulario
Al hacer clic en Guardar, el sistema:
- Valida el modelo (
ModelState.IsValid). - Crea el
IdentityUserconUserManager.CreateAsync. - Asigna el rol seleccionado con
UserManager.AddToRoleAsync. - Si ocurre algún error de Identity (por ejemplo, email duplicado), los errores se muestran en el formulario.
Editar usuario
La rutaGET /Usuario/Editar/{id} carga el formulario de edición con los datos actuales del usuario identificado por su Id. El formulario usa el modelo EditarUsuarioVM:
| Campo | Validación | Descripción |
|---|---|---|
Id | Campo oculto (hidden) | Identifica al usuario que se está editando |
| Correo Electrónico | Requerido, formato de email válido | Actualiza Email y UserName del usuario |
| Nueva Contraseña (Opcional) | Opcional, mínimo 6 caracteres si se proporciona | Si se deja vacío, la contraseña actual no cambia |
| Confirmar nueva contraseña | Debe coincidir con el campo Contraseña si se completó | Solo se valida cuando se ingresa una nueva contraseña |
| Rol | Requerido | Nuevo rol a asignar |
POST /Usuario/Editar realiza las siguientes operaciones en orden:
- Actualiza email y username con
UserManager.UpdateAsync. - Actualiza el rol: si el rol enviado difiere del rol actual, se eliminan todos los roles existentes con
RemoveFromRolesAsyncy luego se asigna el nuevo conAddToRoleAsync. - Actualiza la contraseña (solo si el campo
Passwordno está vacío): se genera un token de reseteo conGeneratePasswordResetTokenAsyncy se aplica conResetPasswordAsync.
ModelState y el formulario se vuelve a mostrar con los mensajes correspondientes.
Eliminar usuario
La acciónPOST /Usuario/Eliminar recibe el id del usuario a eliminar. Antes de proceder, el sistema ejecuta una verificación de seguridad crítica:
UserManager.DeleteAsync. En caso de éxito, se establece TempData["Mensaje"] = "Usuario eliminado exitosamente." y se redirige al listado.
Los requisitos de contraseña están intencionalmente relajados para facilitar el desarrollo y las pruebas:El único requisito activo es una longitud mínima de 6 caracteres. Para un entorno de producción, se recomienda activar las restricciones adicionales (
RequireDigit, RequireUppercase, etc.) en Program.cs.