Quien administra (users.create) crea la cuenta con nombres, apellidos, correo y rol. Nadie le define la contraseña: la cuenta nace con una aleatoria y la persona recibe un correo de bienvenida que la lleva a crear la suya con “¿Olvidaste tu contraseña?”. Solo se puede dar un rol por debajo del propio nivel.
Paso a paso
- AdministraciónLlena nombres, apellidos, correo y rol
En
/administracion/usuarios/nuevo. Solo se ofrecen los roles que puede dar (GET /roles,assignable). - NavegadorEnvía POST /users con Idempotency-Key
- API¿Tiene users.create?
El permiso se revisa antes de validar los campos, para que nadie sin permiso pueda averiguar qué correos existen.
- API¿Datos válidos y correo libre?
Nombres y apellidos de hasta 80 caracteres cada uno; correo normalizado (minúsculas y sin espacios), válido y no registrado.
- API¿El rol está por debajo de su nivel?
Niveles como dato (
roles.level): Solicitante 20, Agente 40, Supervisor 60, Administrador 80, Super admin 100. El Super admin puede dar cualquiera. - API¿El rol trae permisos sensibles?
Permisos de los módulos de usuarios, roles o sistema. Si los trae, pide el código de la aplicación de quien administra, como en "Cambiar rol o permisos".
- AdministraciónConfirma con su código
- Base de datosCrea la cuenta con contraseña aleatoria
En la misma transacción,
admin_actions(user_created) con nombre, correo y rol.users.namees una columna calculada de nombres + apellidos. - CorreoEnvía el correo de bienvenida
Por la cola, cifrado mientras espera. Explica cómo entrar y lleva a
/recuperar. - Persona nuevaCrea su contraseña con el código del correo
El mismo flujo de "Recuperar la contraseña".
- Persona nuevaIngresa y configura su MFA
Con el ingreso de gracia de su rol.
Qué ve la persona en cada error
| Código | HTTP | Cuándo | Mensaje en pantalla |
|---|---|---|---|
ALREADY_TAKEN (campo email) | 422 | El correo ya está registrado | Este valor ya está en uso. Prueba con otro. |
ROLE_NOT_ASSIGNABLE | 422 | El rol es de su nivel o superior | No puedes dar ese rol: solo puedes asignar roles por debajo del tuyo. |
REAUTHENTICATION_REQUIRED | 422 | El rol es sensible y no llegó el código; abre el diálogo del código | Para confirmar este cambio, escribe el código de tu aplicación de autenticación. |
FORBIDDEN_ACTION | 403 | Sin users.create | No tienes permiso para hacer esta acción. Si crees que deberías tenerlo, habla con un administrador. |
Dónde está en el código
CreateUser: permiso, rol, reautenticación y bienvenida.CreateUserRequest,UserRequestyChecksPermission.UserAccess(canGiveRole).AccountWelcome.useUserCreateyUserCreatePage.- Explicación: Módulo Users.