pitch: GranularAC - Sua Ferramenta de Controle de Acesso em Node.js
Imagine ter o controle total sobre quem pode fazer o que no seu app Node.js. Com o GranularAC, isso não é apenas possível, mas também incrivelmente simples e preciso. Inspirado pelo sistema de autorização do Tabnews, criado pelo digníssimo @Filipe Deschamps, e otimizado para TypeScript com a ajuda de "as const", o GranularAC oferece um controle de acesso detalhado e tipo-seguro.
Por Que Escolher o GranularAC?
- Granularidade: Especificidade é a palavra-chave aqui. Controle quem pode acessar e o que pode fazer com precisão milimétrica.
- Flexibilidade: Seja qual for o seu cenário, o GranularAC se adapta para atender às suas necessidades.
- Escalabilidade: O seu projeto está crescendo? O GranularAC acompanha esse crescimento sem problemas.
- Segurança: Mantenha intrusos digitais longe das suas informações valiosas.
- Simplicidade: Apesar de seu poder, é incrivelmente simples de implementar.
- Amigável ao TypeScript: Aproveite a tipagem forte para um código mais robusto e seguro.
Implementação do GranularAC
Instalação
Inicie adicionando o GranularAC ao seu projeto:
npm install granular-ac
Criando Permissões
Simulando a criação de permissões para um recurso "document":
import { ARS } from "granular-ac";
// Configurando permissões para "document"
const documentCredentials = new ARS("document", {
read: ["public", "private"],
edit: ["private"],
} as const); // "as const" ajuda a manter a imutabilidade e a precisão do tipo
const permissions = documentCredentials.build();
console.log(permissions.read.document.public); // 'read:document:public'
console.log(permissions.edit.document.private); // 'edit:document:private'
Tipagem Forte em Ação
Agora, observe o que acontece quando tentamos acessar uma ação ou escopo não declarado:
// Tentando acessar uma ação não definida: 'share'
console.log(permissions.share.document.public); // Erro do TypeScript!
// Tentando acessar um escopo não definido: 'global'
console.log(permissions.read.document.global); // Erro do TypeScript!
Nesses casos, o TypeScript irá apontar um erro, pois 'share' não é uma ação definida e 'global' não é um escopo definido para o recurso "document". Essa é a beleza da integração do GranularAC com TypeScript: você obtém verificações de tipo em tempo de compilação, evitando erros inesperados em tempo de execução.
Verificando Permissões
Verificamos se um usuário pode editar um documento:
const userPermissions = ['read:document:public', 'edit:document:private'];
const canEdit = documentCredentials.verify('edit', 'private', userPermissions);
if (canEdit) {
console.log('Edição autorizada. Pode prosseguir!');
} else {
console.log('Edição negada. Acesso não permitido.');
}
E é assim que, com poucas linhas de código, você ganha um controle incrível sobre o que acontece no seu app, garantindo que tudo esteja em harmonia e segurança. Obrigado, Filipe, pela inspiração com o Tabnews, e agora é com você para implementar o GranularAC no seu projeto e levar a segurança a outro nível!