{"_id":"@cartoriocriciuma/rbac-backend","_rev":"2-462c25a6b9c22a31c70c7153c86d0770","name":"@cartoriocriciuma/rbac-backend","dist-tags":{"latest":"1.0.0-alpha.2"},"versions":{"1.0.0-alpha.1":{"name":"@cartoriocriciuma/rbac-backend","version":"1.0.0-alpha.1","keywords":["rbac","backend","permissions","authentication"],"author":{"name":"Cartório Criciúma"},"license":"ISC","_id":"@cartoriocriciuma/rbac-backend@1.0.0-alpha.1","maintainers":[{"name":"guilhermecelso","email":"ti@cartoriocriciuma.com.br"}],"homepage":"https://github.com/cartoriocriciuma/rbac-monorepo#readme","bugs":{"url":"https://github.com/cartoriocriciuma/rbac-monorepo/issues"},"dist":{"shasum":"d75e07d01d4b3cdeba52843f09abdd69f39e5fcd","tarball":"https://registry.npmjs.org/@cartoriocriciuma/rbac-backend/-/rbac-backend-1.0.0-alpha.1.tgz","fileCount":2,"integrity":"sha512-SXNRVCxauWfo0O/oekuwdmHgpxdfIQsEj0c00bkTV0RoF1Gp8JHPALn/3atgAxW25xUeKTxX6fpZTrNvw4TKyA==","signatures":[{"sig":"MEYCIQDKJwE+rUV5EXDX1xzmeoHXwJXVoU5Zql8TqGNomaF4zgIhAJAjQGydn+kTBHlkWZBwIAzCmzAIlALUVlbtdxuSueIo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4911},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rimraf dist","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"guilhermecelso","email":"ti@cartoriocriciuma.com.br"},"repository":{"url":"git+https://github.com/cartoriocriciuma/rbac-monorepo.git","type":"git","directory":"packages/rbac-backend"},"_npmVersion":"10.8.2","description":"Backend para o sistema RBAC centralizado","directories":{},"_nodeVersion":"20.19.1","dependencies":{"rxjs":"^7.5.0","@nestjs/core":"^9.0.0","@nestjs/common":"^9.0.0","@cartoriocriciuma/rbac-types":"^1.0.0-alpha.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","rimraf":"^5.0.5","ts-jest":"^29.1.0","typescript":"^5.0.4","@types/jest":"^29.5.0","@types/node":"^18.15.11"},"peerDependencies":{"@nestjs/core":"^9.0.0","@nestjs/common":"^9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rbac-backend_1.0.0-alpha.1_1747079862556_0.7183302134746234","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-alpha.2":{"name":"@cartoriocriciuma/rbac-backend","version":"1.0.0-alpha.2","description":"Backend para o sistema RBAC centralizado","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"rimraf dist && tsc -p tsconfig.json --outDir ./dist","clean":"rimraf dist","lint":"eslint src --ext .ts","test":"jest","prepublishOnly":"npm run clean && npm run build"},"keywords":["rbac","backend","permissions","authentication"],"author":{"name":"Cartório Criciúma"},"license":"ISC","dependencies":{"@cartoriocriciuma/rbac-types":"^1.0.0-alpha.1","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","rxjs":"^7.5.0"},"peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^18.15.11","jest":"^29.5.0","rimraf":"^5.0.5","ts-jest":"^29.1.0","typescript":"^5.0.4"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/cartoriocriciuma/rbac-monorepo.git","directory":"packages/rbac-backend"},"_id":"@cartoriocriciuma/rbac-backend@1.0.0-alpha.2","bugs":{"url":"https://github.com/cartoriocriciuma/rbac-monorepo/issues"},"homepage":"https://github.com/cartoriocriciuma/rbac-monorepo#readme","_nodeVersion":"20.19.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-KGF2KWEMS7OJt6mDVnSavbqnZe2c4AUaacj20pIuFgXzDywSK03UhV7Fmkc7y5JDUVnFc9oYjAwkjzY933mTkw==","shasum":"50413acbfc3250ed7458b54a1d708c2c9b0d52f3","tarball":"https://registry.npmjs.org/@cartoriocriciuma/rbac-backend/-/rbac-backend-1.0.0-alpha.2.tgz","fileCount":2,"unpackedSize":4959,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC3jmG8sE3sMyNmjDCn1FEatBPTWwbdeWbDH/+HhjAAegIgdxKn4iPAe/XDmGYbq/YgQ8E03HNYgUDzVl1VCNTLF48="}]},"_npmUser":{"name":"guilhermecelso","email":"ti@cartoriocriciuma.com.br"},"directories":{},"maintainers":[{"name":"guilhermecelso","email":"ti@cartoriocriciuma.com.br"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rbac-backend_1.0.0-alpha.2_1747080045282_0.7079006803819841"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-12T19:57:42.459Z","modified":"2025-05-12T20:00:45.732Z","1.0.0-alpha.1":"2025-05-12T19:57:42.714Z","1.0.0-alpha.2":"2025-05-12T20:00:45.443Z"},"bugs":{"url":"https://github.com/cartoriocriciuma/rbac-monorepo/issues"},"author":{"name":"Cartório Criciúma"},"license":"ISC","homepage":"https://github.com/cartoriocriciuma/rbac-monorepo#readme","keywords":["rbac","backend","permissions","authentication"],"repository":{"type":"git","url":"git+https://github.com/cartoriocriciuma/rbac-monorepo.git","directory":"packages/rbac-backend"},"description":"Backend para o sistema RBAC centralizado","maintainers":[{"name":"guilhermecelso","email":"ti@cartoriocriciuma.com.br"}],"readme":"# @cartoriocriciuma/rbac-backend\n\nBackend para o sistema RBAC centralizado.\n\n## Descrição\n\nEste pacote fornece os componentes de backend para um sistema de Controle de Acesso Baseado em Funções (RBAC) para arquiteturas de microfrontends. Implementa uma abordagem baseada em adaptadores que permite integração com diferentes tecnologias de persistência e frameworks.\n\n## Instalação\n\n```bash\nnpm install @cartoriocriciuma/rbac-backend @cartoriocriciuma/rbac-types\n```\n\n## Componentes Principais\n\n### Adaptadores\n\nInterfaces para integração com diferentes tecnologias:\n\n- `StorageAdapter`: Para persistência de dados\n- `LoggerAdapter`: Para logging\n- `EventEmitterAdapter`: Para comunicação via eventos\n\n### Repositórios\n\nCamada de acesso a dados:\n\n- `PermissionsRepository`: Gerenciamento de permissões e grupos\n- `RolesRepository`: Gerenciamento de papéis e suas permissões\n- `ManifestRepository`: Gerenciamento de manifestos de permissões\n\n### Serviços\n\nLógica de negócio:\n\n- `PermissionsService`: Gerenciamento de permissões\n- `RolesService`: Gerenciamento de papéis\n- `ManifestService`: Processamento de manifestos\n\n### Integração com NestJS\n\nComponentes para integração com NestJS:\n\n- Decorador `@RequirePermission()`: Protege rotas com permissão única\n- Decorador `@RequirePermissions()`: Protege rotas com múltiplas permissões\n- Guarda `PermissionGuard`: Implementa verificação de permissões\n\n### Utilitários\n\nFunções auxiliares:\n\n- Verificação de permissões\n- Manipulação de códigos de permissão\n- Agrupamento de permissões\n\n## Exemplos de Uso\n\n### Configuração Básica (NestJS)\n\n```typescript\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { \n  PermissionsService, \n  RolesService,\n  StorageAdapter,\n  PermissionsRepository,\n  RolesRepository\n} from '@cartoriocriciuma/rbac-backend';\nimport { MongoPermissionStorage } from './adapters/MongoPermissionStorage';\n\n@Module({\n  providers: [\n    {\n      provide: StorageAdapter,\n      useClass: MongoPermissionStorage\n    },\n    PermissionsRepository,\n    RolesRepository,\n    PermissionsService,\n    RolesService\n  ],\n  exports: [\n    PermissionsService,\n    RolesService\n  ]\n})\nexport class RbacModule {}\n```\n\n### Proteção de Rotas (NestJS)\n\n```typescript\n// users.controller.ts\nimport { Controller, Get, UseGuards } from '@nestjs/common';\nimport { \n  RequirePermission,\n  RequirePermissions,\n  PermissionsStrategy,\n  PermissionGuard \n} from '@cartoriocriciuma/rbac-backend';\nimport { AuthGuard } from './auth.guard';\n\n@Controller('users')\nexport class UsersController {\n  @Get()\n  @UseGuards(AuthGuard, PermissionGuard)\n  @RequirePermission('users:view')\n  findAll() {\n    // Só é executado se o usuário tem a permissão 'users:view'\n    return this.usersService.findAll();\n  }\n  \n  @Get('/reports')\n  @UseGuards(AuthGuard, PermissionGuard)\n  @RequirePermissions({\n    permissions: ['reports:view', 'users:view'],\n    strategy: PermissionsStrategy.ALL\n  })\n  getReports() {\n    // Só é executado se o usuário tem ambas as permissões\n    return this.reportsService.getUserReports();\n  }\n}\n```\n\n### Serviços e Repositórios\n\n```typescript\n// Exemplo de uso do serviço de permissões\nimport { Injectable } from '@nestjs/common';\nimport { PermissionsService } from '@cartoriocriciuma/rbac-backend';\n\n@Injectable()\nexport class AppService {\n  constructor(private permissionsService: PermissionsService) {}\n  \n  async createPermission() {\n    return this.permissionsService.createPermission({\n      codigo: 'users:create',\n      name: 'Criar Usuários',\n      description: 'Permite criar novos usuários no sistema',\n      recurso: 'users',\n      acao: 'create'\n    });\n  }\n}\n```\n\n## Licença\n\nISC ","readmeFilename":"README.md"}