Skip to content

feat(scripts): deletar roles sem nenhuma permissão - #500

Merged
FernandoAlmeidaPinto merged 1 commit into
developfrom
feature/delete-roles-sem-permissao
Jul 25, 2026
Merged

feat(scripts): deletar roles sem nenhuma permissão#500
FernandoAlmeidaPinto merged 1 commit into
developfrom
feature/delete-roles-sem-permissao

Conversation

@FernandoAlmeidaPinto

Copy link
Copy Markdown
Member

Closes #499

O que faz

Adiciona scripts/delete-roles-without-permissions.ts (npm run roles:cleanup:permissions), espelhando o precedente scripts/create-admin-user.ts: script standalone em ts-node que reusa o DataSource/entities do TypeORM e lê config de .env ou de variáveis de ambiente (MY_HOST/MY_PORT/MY_USER/MY_PASSWORD/MY_DB_NAME) — funciona local, HML e prod.

Deleta roles em que todas as 28 colunas de permissão são false (equivalentes à aluno), que são as roles de teste da fase beta.

Salvaguardas ⚠️

O dry-run em homologação mostrou que o critério puro é destrutivo: a role aluno tem todas as permissões false e 1548 usuários. Por isso o script nunca deleta roles que:

  • tenham name em ('aluno','admin') ou base = true;
  • estejam vinculadas a um cursinho (partnerPrepCourseId);
  • sejam roleBase de outra role (children não vazio);
  • possuam ≥1 usuário (users.roleId).

Mais: dry-run por padrão (só lista), --apply + confirmação [s/N] para deletar (--yes pula o prompt), backup .json antes de apagar e transação no DELETE.

Uso

npm run roles:cleanup:permissions              # dry-run (lista + backup)
npm run roles:cleanup:permissions -- --apply   # lista, confirma e deleta

Validação

  • tsc --noEmit e eslint limpos.
  • Dry-run em HML: 6 roles all-false, todas legítimas (aluno, ex-membro de cursinho, 4 base templates com filhas) → 0 elegíveis (comportamento correto).
  • Pendente: rodar dry-run em produção, conferir a lista e aplicar (onde o lixo de teste deve estar).

🤖 Generated with Claude Code

Adiciona scripts/delete-roles-without-permissions.ts (npm run
roles:cleanup:permissions), espelhando o padrão de create-admin-user.ts:
lê config de .env ou env vars, reusa as entities do TypeORM.

Deleta roles em que todas as 28 colunas de permissão são false, com
salvaguardas obrigatórias (nunca apaga aluno/admin, base, roles de
cursinho, roleBase com filhas, nem roles com usuários) — o dry-run em
homologação mostrou que a role "aluno" tem todas as permissões false e
1548 usuários, então o critério puro seria destrutivo.

Dry-run por padrão; exige --apply + confirmação. Gera backup .json e
usa transação no delete.

Refs #499

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@FernandoAlmeidaPinto FernandoAlmeidaPinto self-assigned this Jul 25, 2026
@FernandoAlmeidaPinto
FernandoAlmeidaPinto merged commit 54367ca into develop Jul 25, 2026
4 checks passed
@FernandoAlmeidaPinto
FernandoAlmeidaPinto deleted the feature/delete-roles-sem-permissao branch July 25, 2026 19:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deletar roles inúteis

1 participant