@quadcore-lib/users-server
v0.1.0
Published
Administración de usuarios (panel admin) sobre `@quadcore-lib/auth-server`. **No modifica la `UserEntity` base** (que se mantiene minimal): el estado de administración (`isActive`, `lastLoginAt`, soft-delete) vive en una tabla aparte `user_accounts`. El `
Readme
@quadcore-lib/users-server
Administración de usuarios (panel admin) sobre @quadcore-lib/auth-server. No modifica la UserEntity base (que se mantiene minimal): el estado de administración (isActive, lastLoginAt, soft-delete) vive en una tabla aparte user_accounts. El rol sí vive en la entidad base. Todos los endpoints requieren rol admin.
Endpoints (admin)
| Método | Ruta | Descripción |
|---|---|---|
| GET | /users | Listado paginado: usuario base unido a su estado de cuenta (isActive, lastLoginAt, deletedAt). Query: page, pageSize, role. |
| GET | /users/:id | Usuario base. 404 si no existe. |
| PATCH | /users/:id/role | Cambia el rol (en la entidad base). |
| PATCH | /users/:id/status | Activa/desactiva (en user_accounts). Body: { "isActive": false }. |
| DELETE | /users/:id | Soft-delete de la cuenta (marca user_accounts.deletedAt). |
| POST | /users/:id/restore | Restaura la cuenta. |
Entidades
UserEntity(deauth-server, intacta):id,email,role,auth0Id, timestamps.UserAccountEntity(user_accounts, de este paquete):userId(=UserEntity.id, ref suave),isActive,lastLoginAt, timestamps,deletedAt(soft-delete).
UsersService.recordLogin(userId) actualiza lastLoginAt (llamalo desde el flujo de login del consumidor si querés trackear el último acceso, sin tocar auth-server).
Migración en el consumidor: solo crea la tabla
user_accounts.auth-serverno requiere ninguna migración — su entidad no cambió.
Enforcement de cuenta (isActive / soft-delete) en el JWT
Este módulo provee UserAccountStatusProvider, que implementa el puerto AccountStatusProvider de auth-server (cruza users por auth0Id → user_accounts). El módulo es @Global y expone el token ACCOUNT_STATUS_PROVIDER, así el JwtAuthGuard lo inyecta automáticamente: con solo registrar QuadcoreUsersModule.forRoot(), toda petición autenticada de una cuenta con isActive=false o soft-deleted recibe 403.
Si no registrás este módulo, auth-server no hace el chequeo (retrocompatible). auth-server no depende de este paquete: el acoplamiento es solo el puerto.
Migraciones
Este paquete trae sus migraciones de TypeORM en dist/src/migrations/*.js (se compilan junto al resto). Ver la guía completa (setup del DataSource, cómo combinarlas con las de otros paquetes, synchronize en dev vs. prod) en el README de @quadcore-lib/core-server, sección "Migraciones de DB".
