@devstroupe/devkit-cli 1.1.11 → 1.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +55 -0
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -672,6 +672,10 @@ export const routes: Routes = [
672
672
  }
673
673
  console.log('[Roteamento] app.entity-routes.ts sincronizado com as entidades ativas.');
674
674
  updateMainLayoutNavigation(frontendRoot, activeEntities, config.layout?.navigation);
675
+ // Atualizar permissões no backend (seed) e frontend (componente de gerenciamento de perfis)
676
+ const backendRoot = path.resolve(process.cwd(), config.backendPath || './backend');
677
+ updateDatabaseSeedPermissions(backendRoot, config);
678
+ updateRolePermissionsComponent(frontendRoot, config);
675
679
  }
676
680
  function updateMainLayoutNavigation(frontendRoot, entities = [], configuredNavigation) {
677
681
  const layoutPath = path.join(frontendRoot, 'src', 'app', 'shared', 'layouts', 'main-layout', 'main-layout.component.ts');
@@ -730,6 +734,57 @@ function updateMainLayoutNavigation(frontendRoot, entities = [], configuredNavig
730
734
  fs.writeFileSync(layoutPath, updated, 'utf-8');
731
735
  console.log('[Navegação] Menu principal sincronizado com as entidades ativas.');
732
736
  }
737
+ function updateDatabaseSeedPermissions(backendRoot, config) {
738
+ const seedPath = path.join(backendRoot, 'src', 'modules', 'user', 'database-seed.service.ts');
739
+ if (!fs.existsSync(seedPath))
740
+ return;
741
+ const entities = config.entities || [];
742
+ try {
743
+ let content = fs.readFileSync(seedPath, 'utf-8');
744
+ // Substituir allPermissions
745
+ const allPermissionsRegex = /const allPermissions = \[[^\]]*\];/s;
746
+ const newAllPermissions = `const allPermissions = [
747
+ '*',
748
+ 'read:role', 'create:role', 'update:role', 'delete:role', 'manage:permissions',
749
+ ${entities.map((e) => {
750
+ const name = e.name.toLowerCase();
751
+ return `'read:${name}', 'create:${name}', 'update:${name}', 'delete:${name}'`;
752
+ }).join(',\n ')}
753
+ ];`;
754
+ content = content.replace(allPermissionsRegex, newAllPermissions);
755
+ // Substituir permissões do Usuário Comum
756
+ const userPermissionsRegex = /name: 'Usuário Comum',\s+permissions: \[[^\]]*\],/s;
757
+ const newUserPermissions = `name: 'Usuário Comum',\n permissions: [${entities.map((e) => `'read:${e.name.toLowerCase()}'`).join(', ')}],`;
758
+ content = content.replace(userPermissionsRegex, newUserPermissions);
759
+ fs.writeFileSync(seedPath, content, 'utf-8');
760
+ console.log('[Permissões] database-seed.service.ts atualizado com as permissões das novas entidades.');
761
+ }
762
+ catch (err) {
763
+ console.error('[Erro] Falha ao atualizar permissões no database-seed.service.ts:', err);
764
+ }
765
+ }
766
+ function updateRolePermissionsComponent(frontendRoot, config) {
767
+ const compPath = path.join(frontendRoot, 'src', 'app', 'modules', 'role', 'role-permissions.component.ts');
768
+ if (!fs.existsSync(compPath))
769
+ return;
770
+ const entities = config.entities || [];
771
+ try {
772
+ let content = fs.readFileSync(compPath, 'utf-8');
773
+ const resourcesRegex = /resources: ResourceItem\[\] = \[[^\]]*\];/s;
774
+ const newResources = `resources: ResourceItem[] = [
775
+ { name: 'role', label: 'Perfis de Acesso' },
776
+ ${entities.map((e) => {
777
+ return `{ name: '${e.name.toLowerCase()}', label: '${e.label || kebabToPascal(e.name)}' }`;
778
+ }).join(',\n ')}
779
+ ];`;
780
+ content = content.replace(resourcesRegex, newResources);
781
+ fs.writeFileSync(compPath, content, 'utf-8');
782
+ console.log('[Permissões] role-permissions.component.ts atualizado com os recursos das novas entidades.');
783
+ }
784
+ catch (err) {
785
+ console.error('[Erro] Falha ao atualizar recursos no role-permissions.component.ts:', err);
786
+ }
787
+ }
733
788
  function writeAppNavigation(frontendRoot, navigation) {
734
789
  const navigationPath = path.join(frontendRoot, 'src', 'app', 'app.navigation.ts');
735
790
  const items = JSON.stringify(navigation, null, 2)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devstroupe/devkit-cli",
3
- "version": "1.1.11",
3
+ "version": "1.1.12",
4
4
  "description": "DevsTroupe Development Kit CLI — scaffold NestJS+Angular projects, inject Spartan UI, generate CRUDs and audit architectural governance",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -36,7 +36,7 @@
36
36
  "dependencies": {
37
37
  "commander": "^12.0.0",
38
38
  "fs-extra": "^11.2.0",
39
- "@devstroupe/devkit-core": "1.1.11"
39
+ "@devstroupe/devkit-core": "1.1.12"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/fs-extra": "^11.0.4",