CRUD de Usuários e Papéis (role weight, permissões, gitignore de worktrees)

- apps/api/src/users/: invite (senha temporária, mesma entropia do
  legado), PATCH (role/isActive, com checagem de peso), reset de senha
  administrativo, troca de senha self-service, grant/revoke de acesso a
  aplicação — cada ação sensível auditada.
- apps/api/src/roles/: CRUD de papéis e gestão de role_permissions,
  exclusivo super_admin (SuperAdminGuard), mirando o requireSuperAdmin do
  legado — deliberadamente não generalizado para o modelo de permissão
  resource+action+scope, por ser a raiz do próprio sistema de
  autorização (documentado em roles.service.ts).
- apps/api/src/auth/role-weight.ts: assertCanAssignRole/assertCanActOnUser
  (eden.md §1.6) — um ator nunca atribui papel nem mexe em usuário com
  peso maior que o seu; super_admin sempre passa.
- .gitignore: .claude/worktrees/ (worktrees temporários de subagentes
  paralelos nunca devem virar submódulo do repo principal).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-03 09:40:28 -03:00
parent 8d81cf506b
commit 8f638f2743
19 changed files with 766 additions and 4 deletions

4
.gitignore vendored
View File

@@ -45,3 +45,7 @@ infra/docker/pgdata/
# Claude Code local overrides (personal, never shared)
.claude/settings.local.json
# Temporary git worktrees created for parallel subagent work — each is its
# own nested git checkout; never vendor these into the main repo history.
.claude/worktrees/