permissoes-mdp
v1.5.0
Published
Biblioteca de permissões MDP
Readme
Permissões MDP
Biblioteca de permissões que define um modelo de Role-Based Access Control (RBAC) usando enums para Roles, Actions, SIDs (recursos) e Effects (Allow / Deny).
Instalação
npm install permissoes-mdpou
yarn add permissoes-mdpUso
Import
Você pode importar diretamente os enums e funções utilitárias, por exemplo:
import { Role, Sid, Action, canExecuteAction } from 'permissoes-mdp';
// Exemplo de verificação
const podeCriar = canExecuteAction(Sid.Campeonato, Action.create, Role.ADMIN);
console.log(podeCriar); // true ou false, dependendo das policiesConceitos
- Roles: perfis de usuário (ex.:
SUPER,ADMIN,APOSTADOR, etc.). - SIDs (recurso): quais “entidades” ou “módulos” podem ser protegidos (ex.:
Campeonato,Partida,Usuario). - Actions: ações que podem ser executadas em cada SID (ex.:
create,delete,findOne, etc.). - Effect:
AllowouDeny. Por padrão, esta lib atribui Allow para as ações definidas.
Políticas de Permissão
A biblioteca contém um objeto policies que mapeia, para cada Role, um array de modules. Cada module tem:
Sid: o recurso protegido.Effect: em geralAllow(mas poderia serDenyse necessário).Action: lista das ações que o Role pode executar no Sid.
Exemplo simplificado:
{
[Role.ADMIN]: {
modules: [
{
Sid: Sid.Campeonato,
Effect: Effect.Allow,
Action: [Action.findAll, Action.findOne, Action.create]
},
// ...
]
}
}Funções Principais
getPolicyByRole(role: Role): RolePolicy
Retorna todo o conjunto de regras (RolePolicy) associado a um determinado role.
getActionsBySid(sid: Sid, role: Role): SidActionMap[Sid][]
Retorna todas as actions permitidas (listadas em Effect: Allow) para um determinado sid e role.
canExecuteAction<T extends Sid>(sid: T, action: SidActionMap[T], role: Role): boolean
Verifica se determinado role pode (retorna true) ou não pode (retorna false) executar a action no sid solicitado.
É a função mais usada para validar permissões em tempo de execução.
Scripts
No seu projeto, caso tenha clonado o repositório:
- Build:
npm run build
Compila o TypeScript e gera a pastadist/. - Test:
npm run test
Executa os testes unitários (via Vitest).
Exemplos
Verificando Permissão
import { Role, Sid, Action, canExecuteAction } from 'permissoes-mdp';
const isAllowed = canExecuteAction(Sid.Partida, Action.encerrar, Role.ASSISTENTE);
if (isAllowed) {
console.log("O usuário com role ASSISTENTE pode encerrar a partida.");
} else {
console.log("Sem permissão para encerrar a partida.");
}Listando Ações Permitidas
import { getActionsBySid, Sid, Role } from 'permissoes-mdp';
const adminPartidaActions = getActionsBySid(Sid.Partida, Role.ADMIN);
console.log("Ações que ADMIN pode fazer em Partida:", adminPartidaActions);Contribuição
- Faça um fork do repositório.
- Crie uma nova branch para suas alterações (
git checkout -b feature/minha-feature). - Abra um Pull Request descrevendo as mudanças propostas.
Licença
Este projeto está licenciado sob a MIT License.
