73 lines
1.9 KiB
Markdown
73 lines
1.9 KiB
Markdown
# DH Inspección V2 — Fase A4
|
|
|
|
## Versión
|
|
|
|
```text
|
|
v0.4.0 · Fase A4 · Administración de usuarios y roles
|
|
```
|
|
|
|
## Usuarios
|
|
|
|
```text
|
|
GET /api/v3/users
|
|
POST /api/v3/users
|
|
GET /api/v3/users/:id
|
|
PATCH /api/v3/users/:id
|
|
PATCH /api/v3/users/:id/status
|
|
PUT /api/v3/users/:id/roles
|
|
```
|
|
|
|
El listado acepta `page`, `pageSize`, `search` y `status`. No existe endpoint de
|
|
borrado físico. La desactivación revoca todas las sesiones del usuario.
|
|
|
|
Los usuarios se crean con una contraseña temporal de al menos 12 caracteres.
|
|
El password se transforma a Argon2id antes de persistir y nunca aparece en la
|
|
respuesta ni en auditoría. Cuando `mustChangePassword` está activo, los guards
|
|
bloquean endpoints administrativos hasta completar el cambio de contraseña.
|
|
|
|
## Roles
|
|
|
|
```text
|
|
GET /api/v3/roles
|
|
GET /api/v3/roles/permissions
|
|
GET /api/v3/roles/:id
|
|
POST /api/v3/roles
|
|
PATCH /api/v3/roles/:id
|
|
PUT /api/v3/roles/:id/permissions
|
|
```
|
|
|
|
Los códigos de rol son inmutables después de su creación. Los nombres,
|
|
descripciones y permisos se administran por API. No existe borrado de roles en
|
|
A4.
|
|
|
|
## Permisos requeridos
|
|
|
|
```text
|
|
users.read
|
|
users.create
|
|
users.update
|
|
users.change_status
|
|
users.assign_roles
|
|
roles.read
|
|
roles.manage
|
|
```
|
|
|
|
Cada endpoint usa `@RequirePermissions(...)` y el backend siempre valida la
|
|
matriz actual almacenada en PostgreSQL.
|
|
|
|
## Integridad y auditoría
|
|
|
|
- todas las mutaciones son transaccionales;
|
|
- se registran `USER_CREATED`, `USER_UPDATED`, `USER_STATUS_CHANGED`,
|
|
`USER_ROLES_CHANGED`, `ROLE_CREATED`, `ROLE_UPDATED` y
|
|
`ROLE_PERMISSIONS_CHANGED`;
|
|
- no se auditan passwords, hashes, tokens ni cookies;
|
|
- no se permite la autodesactivación;
|
|
- no se puede dejar el sistema sin al menos un usuario activo con
|
|
`roles.manage` y `users.assign_roles`;
|
|
- cambios de roles y permisos tienen efecto en el siguiente request.
|
|
|
|
## Migraciones
|
|
|
|
A4 no modifica el esquema y no incluye migraciones.
|