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?

  1. Granularidade: Especificidade é a palavra-chave aqui. Controle quem pode acessar e o que pode fazer com precisão milimétrica.
  2. Flexibilidade: Seja qual for o seu cenário, o GranularAC se adapta para atender às suas necessidades.
  3. Escalabilidade: O seu projeto está crescendo? O GranularAC acompanha esse crescimento sem problemas.
  4. Segurança: Mantenha intrusos digitais longe das suas informações valiosas.
  5. Simplicidade: Apesar de seu poder, é incrivelmente simples de implementar.
  6. 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!

Caraa que massa, simples e direto. Curti demais, com certeza vou testar no meu próximo projeto.