runlify 0.0.793 → 0.0.796

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 (57) hide show
  1. package/build/cli.js +8 -2
  2. package/build/projectsGeneration/builders/generationPaths.js +44 -1
  3. package/build/projectsGeneration/generateProject/back/src/generateBackSrc.js +11 -2
  4. package/build/projectsGeneration/generateProject/fileHandlers.js +6 -2
  5. package/build/projectsGeneration/generateProject/front/generateFrontSrc.js +10 -1
  6. package/build/projectsGeneration/generateProject/front/translations/generateFrontSrcTranslations.js +33 -1
  7. package/build/projectsGeneration/generateProject/generateBackClickHouseBootstrap.js +1 -4
  8. package/build/projectsGeneration/generateProject/utils.js +2 -2
  9. package/build/projectsGeneration/generators/fileTemplates/back/clickhouse/jobs.js +41 -4
  10. package/build/projectsGeneration/generators/fileTemplates/back/roles/customPermissions.js +12 -0
  11. package/build/projectsGeneration/generators/fileTemplates/back/roles/customUiPermissions.js +13 -0
  12. package/build/projectsGeneration/generators/fileTemplates/back/roles/initPermissions.js +31 -0
  13. package/build/projectsGeneration/generators/fileTemplates/back/roles/uiPermissions.js +24 -0
  14. package/build/projectsGeneration/generators/fileTemplates/ui/NotFoundPage.js +6 -0
  15. package/build/projectsGeneration/generators/fileTemplates/ui/PermissionPage.js +6 -0
  16. package/build/projectsGeneration/generators/fileTemplates/ui/environment/src/routes.js +5 -5
  17. package/build/projectsGeneration/generators/fileTemplates/ui/getDefaultMenu.js +5 -1
  18. package/build/projectsGeneration/generators/fileTemplates/ui/i18n/skeleton/uiI18nIndexTmpl.js +35 -0
  19. package/build/projectsGeneration/generators/fileTemplates/ui/i18n/skeleton/uiI18nTypesTmpl.js +33 -0
  20. package/build/projectsGeneration/generators/fileTemplates/ui/i18n/skeleton/uiI18nValidationTmpl.js +38 -0
  21. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityCreate/DefaultEntityCreate.js +16 -5
  22. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityEdit/DefaultEntityEdit.js +27 -11
  23. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityList/DefaultEntityFilter.js +13 -4
  24. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityList/DefaultEntityList.js +14 -7
  25. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/DefaultMainTab.js +13 -4
  26. package/build/projectsGeneration/generators/fileTemplates/ui/pages/EntityShow/DependencyTab.js +12 -3
  27. package/build/projectsGeneration/generators/fileTemplates/ui/resources.js +21 -8
  28. package/build/projectsGeneration/generators/fileTemplates/ui/utils/permissions.js +89 -0
  29. package/build/projectsGeneration/generators/ui/getShowComponent.js +2 -2
  30. package/build/types/projectsGeneration/builders/generationPaths.d.ts +42 -0
  31. package/build/types/projectsGeneration/generateProject/fileHandlers.d.ts +1 -0
  32. package/build/types/projectsGeneration/generateProject/types.d.ts +1 -1
  33. package/build/types/projectsGeneration/generateProject/utils.d.ts +1 -1
  34. package/build/types/projectsGeneration/generators/fileTemplates/back/roles/customPermissions.d.ts +2 -0
  35. package/build/types/projectsGeneration/generators/fileTemplates/back/roles/customUiPermissions.d.ts +2 -0
  36. package/build/types/projectsGeneration/generators/fileTemplates/back/roles/initPermissions.d.ts +2 -0
  37. package/build/types/projectsGeneration/generators/fileTemplates/back/roles/uiPermissions.d.ts +3 -0
  38. package/build/types/projectsGeneration/generators/fileTemplates/ui/NotFoundPage.d.ts +2 -0
  39. package/build/types/projectsGeneration/generators/fileTemplates/ui/PermissionPage.d.ts +2 -0
  40. package/build/types/projectsGeneration/generators/fileTemplates/ui/i18n/skeleton/uiI18nIndexTmpl.d.ts +2 -0
  41. package/build/types/projectsGeneration/generators/fileTemplates/ui/i18n/skeleton/uiI18nTypesTmpl.d.ts +3 -0
  42. package/build/types/projectsGeneration/generators/fileTemplates/ui/i18n/skeleton/uiI18nValidationTmpl.d.ts +2 -0
  43. package/build/types/projectsGeneration/generators/fileTemplates/ui/pages/EntityEdit/DefaultEntityEdit.d.ts +1 -0
  44. package/build/types/projectsGeneration/generators/fileTemplates/ui/utils/permissions.d.ts +2 -0
  45. package/docs/01-overview.md +172 -0
  46. package/docs/02-system-meta-builder.md +405 -0
  47. package/docs/03-entity-types.md +471 -0
  48. package/docs/04-fields.md +357 -0
  49. package/docs/05-custom-methods.md +249 -0
  50. package/docs/06-storage.md +129 -0
  51. package/docs/07-backend-file-graph.md +231 -0
  52. package/docs/08-frontend-file-graph.md +260 -0
  53. package/docs/09-options.md +213 -0
  54. package/docs/10-modules.md +164 -0
  55. package/docs/11-permissions.md +231 -0
  56. package/docs/INDEX.md +70 -0
  57. package/package.json +1 -1
@@ -45,12 +45,12 @@ const uiDefaultListTmpl = ({ allEntities, entity, }) => {
45
45
  'List',
46
46
  'DatagridConfigurable',
47
47
  'ListProps',
48
- // 'usePermissions',
48
+ 'usePermissions',
49
49
  // 'BulkDeleteButton',
50
50
  ...R.flatten(notDateFieldsToImport.map((f) => (0, getCompNamesToShowField_1.getCompNamesToShowField)(f))),
51
51
  ];
52
52
  if (entity.removableByUser) {
53
- reactAdminImports.push('usePermissions', 'BulkDeleteButton');
53
+ reactAdminImports.push('BulkDeleteButton');
54
54
  }
55
55
  const registrarDepended = ['infoRegistry', 'sumRegistry'].includes(entity.type) &&
56
56
  'registrarDepended' in entity &&
@@ -69,8 +69,8 @@ import RegistrarField from '../../../../raUiLib/RegistrarField';`
69
69
  ? `
70
70
  import {moneyMinorToMajor} from '../../../../uiLib/transformations/moneyAmount';`
71
71
  : ''}
72
- import ${(0, cases_1.pascalSingular)(entity.name)}Filter from './${(0, cases_1.pascalSingular)(entity.name)}Filter';${entity.removableByUser ? `
73
- import {hasPermission} from '../../../../utils/permissions';` : ''}
72
+ import ${(0, cases_1.pascalSingular)(entity.name)}Filter from './${(0, cases_1.pascalSingular)(entity.name)}Filter';
73
+ import {hasPermission} from '../../../../utils/permissions';
74
74
  import ListActions from '../../../../raUiLib/ListActions';
75
75
  import {BulkActionProps} from "shared/type";
76
76
  import ${(0, cases_1.pascalSingular)(entity.name)}ListBreadcrumbs from './${(0, cases_1.pascalSingular)(entity.name)}ListBreadcrumbs';${withFileRef
@@ -88,6 +88,8 @@ const DefaultBulkActionButton = (props: BulkActionProps) => {
88
88
  };
89
89
  ` : ''}
90
90
  const Default${(0, cases_1.pascalSingular)(entity.name)}List: FC<ListProps> = (props: ListProps) => {
91
+ const {permissions} = usePermissions<string[]>();
92
+
91
93
  return (
92
94
  <>
93
95
  <${(0, cases_1.pascalSingular)(entity.name)}ListBreadcrumbs />
@@ -100,13 +102,18 @@ const Default${(0, cases_1.pascalSingular)(entity.name)}List: FC<ListProps> = (p
100
102
  {...props}
101
103
  >
102
104
  <DatagridConfigurable
103
- rowClick='show'
105
+ rowClick={hasPermission(permissions, '${entity.name}.get') ? 'show' : false}
104
106
  bulkActionButtons={${entity.removableByUser ? '<DefaultBulkActionButton />' : 'false'}}
105
107
  >
106
108
  ${entity.fields
107
109
  .filter((f) => !f.hidden)
108
110
  .filter(f => f.showInList)
109
- .map((f) => (0, getShowComponent_1.getShowComponent)(entity, allEntities, f, 'list'))
111
+ .map((f) => {
112
+ const comp = (0, getShowComponent_1.getShowComponent)(entity, allEntities, f, 'list');
113
+ return f.category === 'link'
114
+ ? `{hasPermission(permissions, '${f.externalEntity}.all') && ${comp}}`
115
+ : comp;
116
+ })
110
117
  .map(utils_1.pad5)
111
118
  .join('\n')}${registrarDepended
112
119
  ? `
@@ -122,4 +129,4 @@ export default Default${(0, cases_1.pascalSingular)(entity.name)}List;
122
129
  `;
123
130
  };
124
131
  exports.uiDefaultListTmpl = uiDefaultListTmpl;
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdEVudGl0eUxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvamVjdHNHZW5lcmF0aW9uL2dlbmVyYXRvcnMvZmlsZVRlbXBsYXRlcy91aS9wYWdlcy9FbnRpdHlMaXN0L0RlZmF1bHRFbnRpdHlMaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseURBQTREO0FBQzVELHdHQUFrRztBQUNsRyx5Q0FBMEI7QUFDMUIsc0VBQWdFO0FBR2hFLGdEQUF5QztBQUN6Qyx3REFBc0Y7QUFDdEYseUNBQWdDO0FBRXpCLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUNoQyxXQUFXLEVBQ1gsTUFBTSxHQUNtQixFQUFFLEVBQUU7SUFDN0IsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsMEJBQWMsQ0FBQyxDQUFBO0lBQzFELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBRTVDLE1BQU0sb0JBQW9CLEdBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFhLENBQUE7SUFFM0UsTUFBTSxjQUFjLEdBQUc7UUFDckIsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUNWLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ2xDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUEsMkJBQWUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzdHLENBQ0Y7S0FDRixDQUFBO0lBQ0QsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDckQsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDdEMsQ0FBQTtJQUNELE1BQU0scUJBQXFCLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FDakQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDOUMsQ0FBQTtJQUNELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsd0JBQVksQ0FBQyxDQUFBO0lBQ3ZELE1BQU0saUJBQWlCLEdBQWE7UUFDbEMsTUFBTTtRQUNOLHNCQUFzQjtRQUN0QixXQUFXO1FBQ1gsb0JBQW9CO1FBQ3BCLHNCQUFzQjtRQUV0QixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQ1YscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLGlEQUF1QixFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzdEO0tBQ0YsQ0FBQTtJQUVELElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRTtRQUMxQixpQkFBaUIsQ0FBQyxJQUFJLENBQ3BCLGdCQUFnQixFQUNoQixrQkFBa0IsQ0FDbkIsQ0FBQTtLQUNGO0lBRUQsTUFBTSxpQkFBaUIsR0FDckIsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDckQsbUJBQW1CLElBQUksTUFBTTtRQUM3QixNQUFNLENBQUMsaUJBQWlCLENBQUE7SUFFMUIsT0FBTzs7SUFFTCxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0dBQ3BELENBQUM7dUJBRUEsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQztxREFDNkM7UUFDL0MsQ0FBQyxDQUFDLEVBQ04sR0FDRSxpQkFBaUI7UUFDZixDQUFDLENBQUM7aUVBQ3lEO1FBQzNELENBQUMsQ0FBQyxFQUNOLEdBQ0UsYUFBYTtRQUNYLENBQUMsQ0FBQztpRkFDeUU7UUFDM0UsQ0FBQyxDQUFDLEVBQ047U0FDTyxJQUFBLHNCQUFjLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBQSxzQkFBYyxFQUNoRSxNQUFNLENBQUMsSUFBSSxDQUNaLFdBQVcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7NkRBQ3NCLENBQUMsQ0FBQyxDQUFDLEVBQUU7OztTQUd6RCxJQUFBLHNCQUFjLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsSUFBQSxzQkFBYyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQ3hGLFdBQVc7UUFDVCxDQUFDLENBQUMsdUVBQXVFO1FBQ3pFLENBQUMsQ0FBQyxFQUNOO0VBQ0UsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7Ozs7OztxQ0FNVSxNQUFNLENBQUMsSUFBSTs7OztDQUkvQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2VBQ1MsSUFBQSxzQkFBYyxFQUN6QixNQUFNLENBQUMsSUFBSSxDQUNaOzs7U0FHTSxJQUFBLHNCQUFjLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzs7aUJBRW5CLElBQUEsa0JBQU0sRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQ2hDLE1BQU0sQ0FBQyxJQUNUO29CQUNrQixJQUFBLHNCQUFjLEVBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQ1o7O3lCQUVzQixNQUFNLENBQUMsU0FBUyxjQUFjLE1BQU0sQ0FBQyxTQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO3lCQUMvRSxDQUFDLENBQUMsQ0FBQyxFQUFFOzs7OzsrQkFLQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsT0FBTzs7RUFFN0YsTUFBTSxDQUFDLE1BQU07U0FDWixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUN4QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1NBQ3pCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSxtQ0FBZ0IsRUFBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM1RCxHQUFHLENBQUMsWUFBSSxDQUFDO1NBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUNULGlCQUFpQjtRQUNmLENBQUMsQ0FBQzsrQ0FDdUM7UUFDekMsQ0FBQyxDQUFDLEVBQ047Ozs7Ozs7d0JBT3NCLElBQUEsc0JBQWMsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0NBQ2xELENBQUE7QUFDRCxDQUFDLENBQUE7QUFsSVksUUFBQSxpQkFBaUIscUJBa0k3QiJ9
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdEVudGl0eUxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvamVjdHNHZW5lcmF0aW9uL2dlbmVyYXRvcnMvZmlsZVRlbXBsYXRlcy91aS9wYWdlcy9FbnRpdHlMaXN0L0RlZmF1bHRFbnRpdHlMaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseURBQTREO0FBQzVELHdHQUFrRztBQUNsRyx5Q0FBMEI7QUFDMUIsc0VBQWdFO0FBR2hFLGdEQUF5QztBQUN6Qyx3REFBc0Y7QUFDdEYseUNBQWdDO0FBRXpCLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUNoQyxXQUFXLEVBQ1gsTUFBTSxHQUNtQixFQUFFLEVBQUU7SUFDN0IsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsMEJBQWMsQ0FBQyxDQUFBO0lBQzFELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBRTVDLE1BQU0sb0JBQW9CLEdBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFhLENBQUE7SUFFM0UsTUFBTSxjQUFjLEdBQUc7UUFDckIsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUNWLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ2xDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUEsMkJBQWUsRUFBQyxDQUFDLENBQUMsQ0FBQyxD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
@@ -37,6 +37,7 @@ const uiEntityShowDefaultMainTabTmpl = ({ allEntities, entity, }) => {
37
37
  const reactAdminImports = [
38
38
  'Tab',
39
39
  'TabProps',
40
+ 'usePermissions',
40
41
  ...R.flatten(notDateFieldsToImport.map((f) => (0, getCompNamesToShowField_1.getCompNamesToShowField)(f))),
41
42
  ];
42
43
  return `import React, {FC} from 'react';
@@ -51,18 +52,26 @@ import DateField from '../../../../uiLib/DateField';`
51
52
  ? `
52
53
  import {moneyMinorToMajor} from '../../../../uiLib/transformations/moneyAmount';`
53
54
  : ''}
54
- import {Grid} from 'shared/Components/Grid';${entity.fields.some(metaUtils_1.isMarkdownField) ? '\nimport ReactMarkdownField from \'../../../../uiLib/ReactMarkdownField\';' : ''}
55
+ import {Grid} from 'shared/Components/Grid';
56
+ import {hasPermission} from '../../../../utils/permissions';${entity.fields.some(metaUtils_1.isMarkdownField) ? '\nimport ReactMarkdownField from \'../../../../uiLib/ReactMarkdownField\';' : ''}
55
57
 
56
58
  const DefaultMainTab: FC<Omit<TabProps, 'children'>> = (props) => {
59
+ const {permissions} = usePermissions<string[]>();
60
+
57
61
  return (<Tab {...props}>
58
62
  <Grid container spacing={2}>
59
63
  ${entity.fields
60
64
  .filter((f) => !f.hidden && f.showInShow)
61
- .map((f) => `<Grid item ${(0, metaUtils_1.isMarkdownField)(f) ? 'xs={12} sm={12} md={12} lg={12}' : 'xs={12} sm={6} md={3} lg={2}'}>
65
+ .map((f) => {
66
+ const gridItem = `<Grid item ${(0, metaUtils_1.isMarkdownField)(f) ? 'xs={12} sm={12} md={12} lg={12}' : 'xs={12} sm={6} md={3} lg={2}'}>
62
67
  <Labeled>
63
68
  ${(0, utils_1.pad2)((0, getShowComponent_1.getShowComponent)(entity, allEntities, f))}
64
69
  </Labeled>
65
- </Grid>`)
70
+ </Grid>`;
71
+ return f.category === 'link'
72
+ ? `{hasPermission(permissions, '${f.externalEntity}.all') && ${gridItem}}`
73
+ : gridItem;
74
+ })
66
75
  .map(utils_1.pad3)
67
76
  .join('\n')}
68
77
  </Grid>
@@ -73,4 +82,4 @@ export default DefaultMainTab;
73
82
  `;
74
83
  };
75
84
  exports.uiEntityShowDefaultMainTabTmpl = uiEntityShowDefaultMainTabTmpl;
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdE1haW5UYWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvamVjdHNHZW5lcmF0aW9uL2dlbmVyYXRvcnMvZmlsZVRlbXBsYXRlcy91aS9wYWdlcy9FbnRpdHlTaG93L0RlZmF1bHRNYWluVGFiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0dBQWtHO0FBQ2xHLHlDQUEwQjtBQUMxQixzRUFBZ0U7QUFFaEUsZ0RBQStDO0FBQy9DLHdEQUF1RTtBQUVoRSxNQUFNLDhCQUE4QixHQUFHLENBQUMsRUFDN0MsV0FBVyxFQUNYLE1BQU0sR0FDbUIsRUFBRSxFQUFFO0lBQzdCLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBQSwyQkFBZSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2SCxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNyRCxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUN0QyxDQUFBO0lBQ0QsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyx3QkFBWSxDQUFDLENBQUE7SUFDdkQsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUNqRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUM5QyxDQUFBO0lBQ0QsTUFBTSxpQkFBaUIsR0FBYTtRQUNsQyxLQUFLO1FBQ0wsVUFBVTtRQUVWLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FDVixxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsaURBQXVCLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDN0Q7S0FDRixDQUFBO0lBRUQsT0FBTzs7SUFFTCxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0dBQ3RELENBQUM7O3VCQUdBLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUM7cURBQzZDO1FBQy9DLENBQUMsQ0FBQyxFQUNOLEdBQ0UsYUFBYTtRQUNYLENBQUMsQ0FBQztpRkFDeUU7UUFDM0UsQ0FBQyxDQUFDLEVBQ047OENBQzRDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsNEVBQTRFLENBQUMsQ0FBQyxDQUFDLEVBQUU7Ozs7O0VBS25LLE1BQU0sQ0FBQyxNQUFNO1NBQ1osTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQztTQUN4QyxHQUFHLENBQ0YsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGNBQWMsSUFBQSwyQkFBZSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLENBQUMsOEJBQThCOztFQUU5RyxJQUFBLFlBQUksRUFBQyxJQUFBLG1DQUFnQixFQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7O1FBRXhDLENBQ0w7U0FDQSxHQUFHLENBQUMsWUFBSSxDQUFDO1NBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQzs7Ozs7O0NBTVosQ0FBQTtBQUNELENBQUMsQ0FBQTtBQTNEWSxRQUFBLDhCQUE4QixrQ0EyRDFDIn0=
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdE1haW5UYWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvamVjdHNHZW5lcmF0aW9uL2dlbmVyYXRvcnMvZmlsZVRlbXBsYXRlcy91aS9wYWdlcy9FbnRpdHlTaG93L0RlZmF1bHRNYWluVGFiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0dBQWtHO0FBQ2xHLHlDQUEwQjtBQUMxQixzRUFBZ0U7QUFFaEUsZ0RBQStDO0FBQy9DLHdEQUF1RTtBQUVoRSxNQUFNLDhCQUE4QixHQUFHLENBQUMsRUFDN0MsV0FBVyxFQUNYLE1BQU0sR0FDbUIsRUFBRSxFQUFFO0lBQzdCLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBQSwyQkFBZSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2SCxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNyRCxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUN0QyxDQUFBO0lBQ0QsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyx3QkFBWSxDQUFDLENBQUE7SUFDdkQsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUNqRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUM5QyxDQUFBO0lBQ0QsTUFBTSxpQkFBaUIsR0FBYTtRQUNsQyxLQUFLO1FBQ0wsVUFBVTtRQUNWLGdCQUFnQjtRQUVoQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQ1YscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLGlEQUF1QixFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzdEO0tBQ0YsQ0FBQTtJQUVELE9BQU87O0lBRUwsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztHQUN0RCxDQUFDOzt1QkFHQSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDO3FEQUM2QztRQUMvQyxDQUFDLENBQUMsRUFDTixHQUNFLGFBQWE7UUFDWCxDQUFDLENBQUM7aUZBQ3lFO1FBQzNFLENBQUMsQ0FBQyxFQUNOOzs4REFFNEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDLENBQUMsRUFBRTs7Ozs7OztFQU9uTCxNQUFNLENBQUMsTUFBTTtTQUNaLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUM7U0FDeEMsR0FBRyxDQUNGLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDSixNQUFNLFFBQVEsR0FBRyxjQUFjLElBQUEsMkJBQWUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDLDhCQUE4Qjs7RUFFMUgsSUFBQSxZQUFJLEVBQUMsSUFBQSxtQ0FBZ0IsRUFBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDOztRQUV4QyxDQUFBO1FBRUYsT0FBTyxDQUFDLENBQUMsUUFBUSxLQUFLLE1BQU07WUFDMUIsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsY0FBYyxhQUFhLFFBQVEsR0FBRztZQUMxRSxDQUFDLENBQUMsUUFBUSxDQUFBO0lBQ2QsQ0FBQyxDQUNGO1NBQ0EsR0FBRyxDQUFDLFlBQUksQ0FBQztTQUNULElBQUksQ0FBQyxJQUFJLENBQUM7Ozs7OztDQU1aLENBQUE7QUFDRCxDQUFDLENBQUE7QUFyRVksUUFBQSw4QkFBOEIsa0NBcUUxQyJ9
@@ -43,6 +43,7 @@ const uiEntityShowDependencyTabTmpl = (allEntities, entity, toLink, _options = t
43
43
  const reactAdminImports = [
44
44
  'TabProps',
45
45
  'Tab',
46
+ 'usePermissions',
46
47
  ...R.flatten(notDateFieldsToImport.map((f) => (0, getCompNamesToShowField_1.getCompNamesToShowField)(f))),
47
48
  ];
48
49
  reactAdminImports.push('ReferenceManyField');
@@ -64,8 +65,11 @@ import DateField from '../../../../../uiLib/DateField';`
64
65
  ? `
65
66
  import {moneyMinorToMajor} from '../../../../../uiLib/transformations/moneyAmount';`
66
67
  : ''}
68
+ import {hasPermission} from '../../../../../utils/permissions';
67
69
 
68
70
  const ${(0, cases_1.pascal)(entity.name)}${(0, cases_1.pascal)(toLink.fromField.name)}Tab: FC<Omit<TabProps, 'children'>> = (props) => {
71
+ const {permissions} = usePermissions<string[]>();
72
+
69
73
  return (<Tab {...props}>
70
74
  <ReferenceManyField
71
75
  label={false}
@@ -75,12 +79,17 @@ const ${(0, cases_1.pascal)(entity.name)}${(0, cases_1.pascal)(toLink.fromField.
75
79
  >
76
80
  <Datagrid
77
81
  bulkActionButtons={false}
78
- rowClick='show'
82
+ rowClick={hasPermission(permissions, '${toLink.entityOwnerName}.get') ? 'show' : false}
79
83
  >
80
84
  ${linkedEntity.fields
81
85
  .filter((f) => !f.hidden)
82
86
  .filter((f) => !(0, metaUtils_1.isMarkdownField)(f))
83
- .map((f) => (0, getShowComponent_1.getShowComponent)(entity, allEntities, f))
87
+ .map((f) => {
88
+ const comp = (0, getShowComponent_1.getShowComponent)(entity, allEntities, f);
89
+ return f.category === 'link'
90
+ ? `{hasPermission(permissions, '${f.externalEntity}.all') && ${comp}}`
91
+ : comp;
92
+ })
84
93
  .map(utils_1.pad4)
85
94
  .join('\n')}
86
95
  <ShowButton />
@@ -93,4 +102,4 @@ export default ${(0, cases_1.pascal)(entity.name)}${(0, cases_1.pascal)(toLink.f
93
102
  `;
94
103
  };
95
104
  exports.uiEntityShowDependencyTabTmpl = uiEntityShowDependencyTabTmpl;
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVRhYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wcm9qZWN0c0dlbmVyYXRpb24vZ2VuZXJhdG9ycy9maWxlVGVtcGxhdGVzL3VpL3BhZ2VzL0VudGl0eVNob3cvRGVwZW5kZW5jeVRhYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUk2QjtBQUM3Qix3R0FBa0c7QUFDbEcseUNBQTBCO0FBQzFCLHlEQUFvRDtBQUNwRCxzRUFBZ0U7QUFFaEUsZ0RBQW1EO0FBQ25ELHdEQUFzRTtBQUUvRCxNQUFNLDZCQUE2QixHQUFHLENBQzNDLFdBQWdDLEVBQ2hDLE1BQWMsRUFDZCxNQUFzQixFQUN0QixXQUFtQyxxQ0FBNkIsRUFDaEUsRUFBRTtJQUNGLE1BQU0sb0JBQW9CLEdBQWE7UUFDckMsTUFBTTtRQUNOLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztLQUN4QyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFhLENBQUE7SUFFeEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FDOUIsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDbEMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUEsMkJBQWUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUNuRixDQUNGLENBQUE7SUFDRCxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNyRCxDQUFDLFVBQVUs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
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVRhYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wcm9qZWN0c0dlbmVyYXRpb24vZ2VuZXJhdG9ycy9maWxlVGVtcGxhdGVzL3VpL3BhZ2VzL0VudGl0eVNob3cvRGVwZW5kZW5jeVRhYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUk2QjtBQUM3Qix3R0FBa0c7QUFDbEcseUNBQTBCO0FBQzFCLHlEQUFvRDtBQUNwRCxzRUFBZ0U7QUFFaEUsZ0RBQW1EO0FBQ25ELHdEQUFzRTtBQUUvRCxNQUFNLDZCQUE2QixHQUFHLENBQzNDLFdBQWdDLEVBQ2hDLE1BQWMsRUFDZCxNQUFzQixFQUN0QixXQUFtQyxxQ0FBNkIsRUFDaEUsRUFBRTtJQUNGLE1BQU0sb0JBQW9CLEdBQWE7UUFDckMsTUFBTTtRQUNOLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztLQUN4QyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFhLENBQUE7SUFFeEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FDOUIsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDbEMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUEsMkJBQWUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUNuRixDQUNGLENBQUE7SUFDRCxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNyRCxDQUFDLFVBQVUs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
@@ -7,7 +7,8 @@ const imports = `import * as React from 'react';
7
7
  import {Resource} from 'react-admin';
8
8
  import {Translate} from 'shared/type';
9
9
  import Loadable from '../shared/Loadable';
10
- import {hasPermission} from '../utils/permissions';`;
10
+ import {withPermission} from '../utils/permissions';
11
+ import NotFoundPage from './NotFoundPage';`;
11
12
  function uiResources(_options, chunks) {
12
13
  const imports = chunks.map(num => `import {resourcesChunk${num}} from './resourcesChunk${num}';`).join("\n");
13
14
  return `import {Translate} from 'shared/type';
@@ -30,6 +31,13 @@ function uiResourcesTmpl({ entities, options }) {
30
31
  };
31
32
  }
32
33
  exports.uiResourcesTmpl = uiResourcesTmpl;
34
+ const isRequiredOnInput = (f) => f.requiredOnInput || f.requiredOnInput === null;
35
+ const isRequiredLinkField = (f) => !f.hidden && f.name !== 'id' && f.category === 'link' && isRequiredOnInput(f);
36
+ const getRequiredLinkPermissions = (entity, showIn) => entity.fields
37
+ .filter((f) => f[showIn])
38
+ .filter(isRequiredLinkField)
39
+ .map((f) => `${f.externalEntity}.all`);
40
+ const permissionsListLiteral = (permissions) => `[${permissions.map((p) => `'${p}'`).join(', ')}]`;
33
41
  function genChunk(_options, num, entities) {
34
42
  return `${imports}
35
43
 
@@ -41,18 +49,23 @@ const Loadable${(0, cases_1.pascalSingular)(m.name)}List = Loadable(() => import
41
49
 
42
50
  export function resourcesChunk${num}(translate: Translate, permissions: string[]) {
43
51
  return [
44
- ${entities.map((entity) => ` <Resource
52
+ ${entities.map((entity) => {
53
+ const editPermissions = [`${entity.name}.update`, ...getRequiredLinkPermissions(entity, 'showInEdit')];
54
+ const createPermissions = [`${entity.name}.create`, ...getRequiredLinkPermissions(entity, 'showInCreate')];
55
+ const listPermissions = [`${entity.name}.all`, `${entity.name}.meta`, `ui.${entity.name}.list`];
56
+ return ` <Resource
45
57
  key='${entity.name}'
46
58
  name='${entity.name}'
47
- show={hasPermission(permissions, '${entity.name}.get') ? Loadable${(0, cases_1.pascalSingular)(entity.name)}Show : undefined}
48
- edit={${entity.updatableByUser ? `hasPermission(permissions, '${entity.name}.update') ? Loadable${(0, cases_1.pascalSingular)(entity.name)}Edit : undefined` : "undefined"}}
49
- create={${entity.creatableByUser ? `hasPermission(permissions, '${entity.name}.create') ? Loadable${(0, cases_1.pascalSingular)(entity.name)}Create : undefined` : "undefined"}}
50
- list={hasPermission(permissions, '${entity.name}.all') ? Loadable${(0, cases_1.pascalSingular)(entity.name)}List : undefined}
59
+ show={withPermission(permissions, '${entity.name}.get', Loadable${(0, cases_1.pascalSingular)(entity.name)}Show)}
60
+ edit={${entity.updatableByUser ? `withPermission(permissions, ${permissionsListLiteral(editPermissions)}, Loadable${(0, cases_1.pascalSingular)(entity.name)}Edit)` : "NotFoundPage"}}
61
+ create={${entity.creatableByUser ? `withPermission(permissions, ${permissionsListLiteral(createPermissions)}, Loadable${(0, cases_1.pascalSingular)(entity.name)}Create)` : "NotFoundPage"}}
62
+ list={withPermission(permissions, ${permissionsListLiteral(listPermissions)}, Loadable${(0, cases_1.pascalSingular)(entity.name)}List)}
51
63
  options={{label: translate('${(0, pluralize_1.plural)(entity.type)}.${entity.name}.title.singular')}}
52
64
  recordRepresentation='${entity.titleField}'
53
- />,`).join('\n')}
65
+ />,`;
66
+ }).join('\n')}
54
67
  ];
55
68
  }
56
69
  `.trimStart();
57
70
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Byb2plY3RzR2VuZXJhdGlvbi9nZW5lcmF0b3JzL2ZpbGVUZW1wbGF0ZXMvdWkvcmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFpQztBQUNqQyxtREFBdUQ7QUFLdkQsTUFBTSxPQUFPLEdBQUc7Ozs7b0RBSW9DLENBQUE7QUFFcEQsU0FBUyxXQUFXLENBQUMsUUFBZ0MsRUFBRSxNQUFnQjtJQUNyRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMseUJBQXlCLEdBQUcsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdHLE9BQU87RUFDUCxPQUFPOzs7O0VBSVAsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLHdCQUF3QixHQUFHLDJCQUEyQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs7O0NBR3JGLENBQUMsU0FBUyxFQUFFLENBQUE7QUFDYixDQUFDO0FBR0QsU0FBZ0IsZUFBZSxDQUFDLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBNEI7SUFDNUUsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEQsT0FBTztRQUNMLFNBQVMsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLGVBQWUsRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUM7UUFDM0MsZUFBZSxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQztLQUM3QyxDQUFBO0FBQ0gsQ0FBQztBQVJELDBDQVFDO0FBRUQsU0FBUyxRQUFRLENBQUMsUUFBZ0MsRUFBRSxHQUFXLEVBQUUsUUFBa0I7SUFDakYsT0FBTyxHQUFHLE9BQU87O0VBRWpCLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixJQUFBLHNCQUFjLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFBLHNCQUFjLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO2dCQUNySixJQUFBLHNCQUFjLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFBLHNCQUFjLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztnQkFDckksSUFBQSxzQkFBYyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsMkNBQTJDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBQSxzQkFBYyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNsSCxJQUFBLHNCQUFjLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFBLHNCQUFjLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUM7Q0FDL0gsQ0FBQzs7Z0NBRThCLEdBQUc7O0VBRWpDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2FBQ2QsTUFBTSxDQUFDLElBQUk7Y0FDVixNQUFNLENBQUMsSUFBSTswQ0FDaUIsTUFBTSxDQUFDLElBQUksb0JBQW9CLElBQUEsc0JBQWMsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2NBQ3RGLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLCtCQUErQixNQUFNLENBQUMsSUFBSSx1QkFBdUIsSUFBQSxzQkFBYyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFdBQVc7Z0JBQ25KLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLCtCQUErQixNQUFNLENBQUMsSUFBSSx1QkFBdUIsSUFBQSxzQkFBYyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLFdBQVc7MENBQzdILE1BQU0sQ0FBQyxJQUFJLG9CQUFvQixJQUFBLHNCQUFjLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztvQ0FDaEUsSUFBQSxrQkFBTSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSTs4QkFDeEMsTUFBTSxDQUFDLFVBQVU7UUFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7OztDQUduQixDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2QsQ0FBQyJ9
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Byb2plY3RzR2VuZXJhdGlvbi9nZW5lcmF0b3JzL2ZpbGVUZW1wbGF0ZXMvdWkvcmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFpQztBQUNqQyxtREFBdUQ7QUFLdkQsTUFBTSxPQUFPLEdBQUc7Ozs7OzJDQUsyQixDQUFBO0FBRTNDLFNBQVMsV0FBVyxDQUFDLFFBQWdDLEVBQUUsTUFBZ0I7SUFDckUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLHlCQUF5QixHQUFHLDJCQUEyQixHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RyxPQUFPO0VBQ1AsT0FBTzs7OztFQUlQLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsR0FBRywyQkFBMkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7OztDQUdyRixDQUFDLFNBQVMsRUFBRSxDQUFBO0FBQ2IsQ0FBQztBQUdELFNBQWdCLGVBQWUsQ0FBQyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQTRCO0lBQzVFLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE9BQU87UUFDTCxTQUFTLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2QyxlQUFlLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQzNDLGVB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
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const uiPermissionsTmpl = () => `import {ComponentType} from 'react';
4
+ import PermissionPage from '../adm/PermissionPage';
5
+
6
+
7
+ const matchesPermission = (currentPermissions: string[], requiredPermission: string) => {
8
+ if (requiredPermission.endsWith('.*')) {
9
+ const prefix = requiredPermission.slice(0, -1);
10
+ return currentPermissions.some(permission => permission.startsWith(prefix));
11
+ }
12
+
13
+ return currentPermissions.includes(requiredPermission);
14
+ };
15
+
16
+ /**
17
+ * Returns true if \`currentPermissions\` satisfies \`requiredPermission\`.
18
+ *
19
+ * \`requiredPermission\` may end in \`.*\` (e.g. \`'foo.bar.*'\`) to match any permission from
20
+ * that family — satisfied if at least one current permission starts with \`'foo.bar.'\`.
21
+ * A plain string without the \`.*\` suffix is matched by exact equality.
22
+ */
23
+ export const hasPermission = (currentPermissions: string[] | undefined, requiredPermission: string) => {
24
+ if (!currentPermissions || currentPermissions.length === 0) {
25
+ return false;
26
+ }
27
+
28
+ return matchesPermission(currentPermissions, requiredPermission);
29
+ };
30
+
31
+ /**
32
+ * Returns true if \`currentPermissions\` satisfies at least one of \`requiredPermissions\`.
33
+ * An empty required list always passes.
34
+ *
35
+ * Any entry ending in \`.*\` (e.g. \`'foo.bar.*'\`) matches any permission from that family
36
+ * (at least one current permission starting with \`'foo.bar.'\`) instead of an exact string.
37
+ */
38
+ export const hasAnyPermission = (currentPermissions: string[] | undefined, requiredPermissions: string[]) => {
39
+ if (requiredPermissions.length === 0) {
40
+ return true;
41
+ }
42
+
43
+ if (!currentPermissions || currentPermissions.length === 0) {
44
+ return false;
45
+ }
46
+
47
+ return requiredPermissions.some(permission => matchesPermission(currentPermissions, permission));
48
+ };
49
+
50
+ /**
51
+ * Returns true if \`currentPermissions\` satisfies every one of \`requiredPermissions\`.
52
+ * An empty required list always passes.
53
+ *
54
+ * Any entry ending in \`.*\` (e.g. \`'foo.bar.*'\`) matches any permission from that family
55
+ * (at least one current permission starting with \`'foo.bar.'\`) instead of an exact string.
56
+ */
57
+ export const hasAllPermissions = (currentPermissions: string[] | undefined, requiredPermissions: string[]) => {
58
+ if (!requiredPermissions || requiredPermissions.length === 0) {
59
+ return true;
60
+ }
61
+
62
+ if (!currentPermissions || currentPermissions.length === 0) {
63
+ return false;
64
+ }
65
+
66
+ return requiredPermissions.every(permission => matchesPermission(currentPermissions, permission));
67
+ };
68
+
69
+ /**
70
+ * Returns \`Component\` if \`currentPermissions\` satisfies all of \`requiredPermissions\`,
71
+ * otherwise returns \`PermissionPage\` (an access-denied fallback) — used so that a
72
+ * \`<Resource>\` prop is never \`undefined\`, keeping its route registered either way.
73
+ *
74
+ * Any entry ending in \`.*\` (e.g. \`'foo.bar.*'\`) matches any permission from that family
75
+ * (at least one current permission starting with \`'foo.bar.'\`) instead of an exact string.
76
+ */
77
+ export const withPermission = <P extends object>(
78
+ currentPermissions: string[] | undefined,
79
+ requiredPermissions: string | string[],
80
+ Component: ComponentType<P>,
81
+ ) => (
82
+ hasAllPermissions(
83
+ currentPermissions,
84
+ Array.isArray(requiredPermissions) ? requiredPermissions : [requiredPermissions],
85
+ ) ? Component : PermissionPage
86
+ );
87
+ `;
88
+ exports.default = uiPermissionsTmpl;
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvamVjdHNHZW5lcmF0aW9uL2dlbmVyYXRvcnMvZmlsZVRlbXBsYXRlcy91aS91dGlscy9wZXJtaXNzaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9GL0IsQ0FBQTtBQUVELGtCQUFlLGlCQUFpQixDQUFBIn0=
@@ -24,7 +24,7 @@ const getLinkShowComponent = (entity, allEntities, field, type) => {
24
24
  if (type === 'list' && (0, metaUtils_1.isImageFileRef)(field)) {
25
25
  return `<ImageViewField reference='${field.externalEntity}' source='${field.name}' ${(0, exports.getFieldLabel)(entity, field)} />`;
26
26
  }
27
- return `<ReferenceField source='${field.name}' ${(0, exports.getFieldLabel)(entity, field)} reference='${field.externalEntity}' link='show' />`;
27
+ return `<ReferenceField source='${field.name}' ${(0, exports.getFieldLabel)(entity, field)} reference='${field.externalEntity}' link={hasPermission(permissions, '${field.externalEntity}.get') ? 'show' : false} />`;
28
28
  };
29
29
  exports.getLinkShowComponent = getLinkShowComponent;
30
30
  const getShowComponent = (entity, allEntities, field, type) => {
@@ -41,4 +41,4 @@ const getShowComponent = (entity, allEntities, field, type) => {
41
41
  }
42
42
  };
43
43
  exports.getShowComponent = getShowComponent;
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0U2hvd0NvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wcm9qZWN0c0dlbmVyYXRpb24vZ2VuZXJhdG9ycy91aS9nZXRTaG93Q29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFnQztBQVFoQywrQ0FBNEQ7QUFDNUQsMkZBQXFGO0FBRTlFLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBYyxFQUFFLEtBQVksRUFBRSxPQUFnQixFQUFFLEVBQUUsQ0FBQyxPQUFPO0lBQ3RGLENBQUMsQ0FBQywwQkFBMEIsSUFBQSxrQkFBTSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxXQUFXLEtBQUssQ0FBQyxJQUFJLG1DQUFtQyxPQUFPLFFBQVE7SUFDckksQ0FBQyxDQUFDLFVBQVUsSUFBQSxrQkFBTSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxXQUFXLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQTtBQUYzRCxRQUFBLGFBQWEsaUJBRThDO0FBRWpFLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsS0FBa0IsRUFBRSxFQUFFO0lBQzNFLE9BQU8sSUFBSSxJQUFBLGlEQUF1QixFQUFDLEtBQUssQ0FBQyxZQUN2QyxLQUFLLENBQUMsSUFDUixLQUFLLElBQUEscUJBQWEsRUFBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQy9CLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQzVDLEdBQ0UsSUFBQSx3QkFBWSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDLENBQUMsRUFDekUsS0FBSyxDQUFBO0FBQ1AsQ0FBQyxDQUFBO0FBUlksUUFBQSxzQkFBc0IsMEJBUWxDO0FBRU0sTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BQWMsRUFBRSxLQUFjLEVBQUUsRUFBRTtJQUNuRSxPQUFPLElBQUksSUFBQSxpREFBdUIsRUFBQyxLQUFLLENBQUMsWUFDdkMsS0FBSyxDQUFDLElBQ1IsS0FBSyxJQUFBLHFCQUFhLEVBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUE7QUFDeEMsQ0FBQyxDQUFBO0FBSlksUUFBQSxrQkFBa0Isc0JBSTlCO0FBRU0sTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxNQUFjLEVBQ2QsV0FBZ0MsRUFDaEMsS0FBZ0IsRUFDaEIsSUFBYSxFQUNiLEVBQUU7SUFDRixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUUxRCxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEtBQUssQ0FBQyxjQUFjLFVBQVUsQ0FBQyxDQUFBO0tBQ2hFO0lBRUQsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUEsMEJBQWMsRUFBQyxLQUFLLENBQUMsRUFBRTtRQUM1QyxPQUFPLDhCQUE4QixLQUFLLENBQUMsY0FBYyxhQUN2RCxLQUFLLENBQUMsSUFDUixLQUFLLElBQUEscUJBQWEsRUFBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQTtLQUN2QztJQUVELE9BQU8sMkJBQTJCLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBQSxxQkFBYSxFQUM1RCxNQUFNLEVBQ04sS0FBSyxDQUNOLGVBQWUsS0FBSyxDQUFDLGNBQWMsa0JBQWtCLENBQUE7QUFDeEQsQ0FBQyxDQUFBO0FBdEJZLFFBQUEsb0JBQW9CLHdCQXNCaEM7QUFFTSxNQUFNLGdCQUFnQixHQUFHLENBQzlCLE1BQWMsRUFDZCxXQUFnQyxFQUNoQyxLQUFZLEVBQ1osSUFBYSxFQUNiLEVBQUU7SUFDRixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFBO0lBQzFCLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssTUFBTTtZQUNULE9BQU8sSUFBQSw0QkFBb0IsRUFBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUMvRCxLQUFLLElBQUk7WUFDUCxPQUFPLElBQUEsMEJBQWtCLEVBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQzFDLEtBQUssUUFBUTtZQUNYLE9BQU8sSUFBQSw4QkFBc0IsRUFBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDOUM7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsUUFBUSxZQUFZLENBQUMsQ0FBQTtLQUN2RDtBQUNILENBQUMsQ0FBQTtBQWpCWSxRQUFBLGdCQUFnQixvQkFpQjVCIn0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0U2hvd0NvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wcm9qZWN0c0dlbmVyYXRpb24vZ2VuZXJhdG9ycy91aS9nZXRTaG93Q29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFnQztBQVFoQywrQ0FBNEQ7QUFDNUQsMkZBQXFGO0FBRTlFLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBYyxFQUFFLEtBQVksRUFBRSxPQUFnQixFQUFFLEVBQUUsQ0FBQyxPQUFPO0lBQ3RGLENBQUMsQ0FBQywwQkFBMEIsSUFBQSxrQkFBTSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxXQUFXLEtBQUssQ0FBQyxJQUFJLG1DQUFtQyxPQUFPLFFBQVE7SUFDckksQ0FBQyxDQUFDLFVBQVUsSUFBQSxrQkFBTSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxXQUFXLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQTtBQUYzRCxRQUFBLGFBQWEsaUJBRThDO0FBRWpFLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsS0FBa0IsRUFBRSxFQUFFO0lBQzNFLE9BQU8sSUFBSSxJQUFBLGlEQUF1QixFQUFDLEtBQUssQ0FBQyxZQUN2QyxLQUFLLENBQUMsSUFDUixLQUFLLElBQUEscUJBQWEsRUFBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQy9CLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQzVDLEdBQ0UsSUFBQSx3QkFBWSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDLENBQUMsRUFDekUsS0FBSyxDQUFBO0FBQ1AsQ0FBQyxDQUFBO0FBUlksUUFBQSxzQkFBc0IsMEJBUWxDO0FBRU0sTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BQWMsRUFBRSxLQUFjLEVBQUUsRUFBRTtJQUNuRSxPQUFPLElBQUksSUFBQSxpREFBdUIsRUFBQyxLQUFLLENBQUMsWUFDdkMsS0FBSyxDQUFDLElBQ1IsS0FBSyxJQUFBLHFCQUFhLEVBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUE7QUFDeEMsQ0FBQyxDQUFBO0FBSlksUUFBQSxrQkFBa0Isc0JBSTlCO0FBRU0sTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxNQUFjLEVBQ2QsV0FBZ0MsRUFDaEMsS0FBZ0IsRUFDaEIsSUFBYSxFQUNiLEVBQUU7SUFDRixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUUxRCxJQUFJLENBQUMsWUFBWSxFQUFFO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEtBQUssQ0FBQyxjQUFjLFVBQVUsQ0FBQyxDQUFBO0tBQ2hFO0lBRUQsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUEsMEJBQWMsRUFBQyxLQUFLLENBQUMsRUFBRTtRQUM1QyxPQUFPLDhCQUE4QixLQUFLLENBQUMsY0FBYyxhQUN2RCxLQUFLLENBQUMsSUFDUixLQUFLLElBQUEscUJBQWEsRUFBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQTtLQUN2QztJQUVELE9BQU8sMkJBQTJCLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBQSxxQkFBYSxFQUM1RCxNQUFNLEVBQ04sS0FBSyxDQUNOLGVBQWUsS0FBSyxDQUFDLGNBQWMsdUNBQXVDLEtBQUssQ0FBQyxjQUFjLDZCQUE2QixDQUFBO0FBQzlILENBQUMsQ0FBQTtBQXRCWSxRQUFBLG9CQUFvQix3QkFzQmhDO0FBRU0sTUFBTSxnQkFBZ0IsR0FBRyxDQUM5QixNQUFjLEVBQ2QsV0FBZ0MsRUFDaEMsS0FBWSxFQUNaLElBQWEsRUFDYixFQUFFO0lBQ0YsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUMxQixRQUFRLFFBQVEsRUFBRTtRQUNoQixLQUFLLE1BQU07WUFDVCxPQUFPLElBQUEsNEJBQW9CLEVBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDL0QsS0FBSyxJQUFJO1lBQ1AsT0FBTyxJQUFBLDBCQUFrQixFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUMxQyxLQUFLLFFBQVE7WUFDWCxPQUFPLElBQUEsOEJBQXNCLEVBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQzlDO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLFFBQVEsWUFBWSxDQUFDLENBQUE7S0FDdkQ7QUFDSCxDQUFDLENBQUE7QUFqQlksUUFBQSxnQkFBZ0Isb0JBaUI1QiJ9
@@ -68,6 +68,13 @@ export declare const GenerationPathCategory: {
68
68
  readonly SharedGraphqlSchemaJson: "shared.generated.graphqlSchemaJson";
69
69
  readonly BackConfig: "back.config";
70
70
  readonly BackRestRouter: "back.rest.router";
71
+ readonly BackRolesInitPermissions: "back.roles.initPermissions";
72
+ readonly BackRolesUiPermissions: "back.roles.uiPermissions";
73
+ readonly BackRolesCustomPermissions: "back.roles.customPermissions";
74
+ readonly BackRolesCustomUiPermissions: "back.roles.customUiPermissions";
75
+ readonly UiPermissionPage: "ui.permissionPage";
76
+ readonly UiNotFoundPage: "ui.notFoundPage";
77
+ readonly UiPermissionsUtils: "ui.permissionsUtils";
71
78
  readonly BackAdditionalServiceTypes: "back.additionalService.types";
72
79
  readonly BackAdditionalServiceGraphTypeDefs: "back.additionalService.graph.typeDefs";
73
80
  readonly BackAdditionalServiceGraphResolvers: "back.additionalService.graph.resolvers";
@@ -336,6 +343,41 @@ export declare const DEFAULT_GENERATION_PATHS: {
336
343
  readonly defaultTemplate: "src/rest/restRouter.ts";
337
344
  readonly params: readonly [];
338
345
  };
346
+ readonly "back.roles.initPermissions": {
347
+ readonly root: "back";
348
+ readonly defaultTemplate: "src/init/roles/generated/initPermissions.ts";
349
+ readonly params: readonly [];
350
+ };
351
+ readonly "back.roles.uiPermissions": {
352
+ readonly root: "back";
353
+ readonly defaultTemplate: "src/init/roles/generated/uiPermissions.ts";
354
+ readonly params: readonly [];
355
+ };
356
+ readonly "back.roles.customPermissions": {
357
+ readonly root: "back";
358
+ readonly defaultTemplate: "src/init/roles/customPermissions.ts";
359
+ readonly params: readonly [];
360
+ };
361
+ readonly "back.roles.customUiPermissions": {
362
+ readonly root: "back";
363
+ readonly defaultTemplate: "src/init/roles/customUiPermissions.ts";
364
+ readonly params: readonly [];
365
+ };
366
+ readonly "ui.permissionPage": {
367
+ readonly root: "ui";
368
+ readonly defaultTemplate: "src/adm/PermissionPage.tsx";
369
+ readonly params: readonly [];
370
+ };
371
+ readonly "ui.notFoundPage": {
372
+ readonly root: "ui";
373
+ readonly defaultTemplate: "src/adm/NotFoundPage.tsx";
374
+ readonly params: readonly [];
375
+ };
376
+ readonly "ui.permissionsUtils": {
377
+ readonly root: "ui";
378
+ readonly defaultTemplate: "src/utils/permissions.ts";
379
+ readonly params: readonly [];
380
+ };
339
381
  readonly "back.additionalService.types": {
340
382
  readonly root: "back";
341
383
  readonly defaultTemplate: "src/adm/services/{ServiceName}/types.ts";
@@ -3,6 +3,7 @@ import { FileHandler } from "./types";
3
3
  export declare function disableEslintForCode(content: string): string;
4
4
  export declare function addDoNotEditThisIsGeneratedFileForCode(content: string): string;
5
5
  export declare function addDoNotEditThisIsGeneratedFileForYaml(content: string): string;
6
+ export declare function addGeneratedOnceNotice(content: string): string;
6
7
  type addWarningsInput = {
7
8
  options: BootstrapEntityOptions;
8
9
  fileType?: 'code' | 'yaml';
@@ -6,6 +6,6 @@ export interface FileToCreate {
6
6
  }
7
7
  export type FileHandler = (content: string) => string;
8
8
  export interface FileCreator {
9
- createIfNotExists: (path: string, content: string) => void;
9
+ createIfNotExists: (path: string, content: string, handlers?: FileHandler[]) => void;
10
10
  create: (path: string, content: string, handlers?: FileHandler[]) => void;
11
11
  }
@@ -1,7 +1,7 @@
1
1
  import { FileHandler, FileToCreate } from './types';
2
2
  export declare const createFilesToWriteUtils: () => {
3
3
  create: (path: string, content: string, handlers?: FileHandler[]) => number;
4
- createIfNotExists: (path: string, content: string) => number;
4
+ createIfNotExists: (path: string, content: string, handlers?: FileHandler[]) => number;
5
5
  getFiles: () => FileToCreate[];
6
6
  reset: () => never[];
7
7
  };
@@ -0,0 +1,2 @@
1
+ export declare const backCustomPermissionsTmpl: () => string;
2
+ export default backCustomPermissionsTmpl;
@@ -0,0 +1,2 @@
1
+ export declare const backCustomUiPermissionsTmpl: () => string;
2
+ export default backCustomUiPermissionsTmpl;
@@ -0,0 +1,2 @@
1
+ export declare const backInitPermissionsTmpl: () => string;
2
+ export default backInitPermissionsTmpl;
@@ -0,0 +1,3 @@
1
+ import { ProjectWideGenerationArgs } from '../../../../args';
2
+ export declare const backUiPermissionsTmpl: ({ entities, options, }: ProjectWideGenerationArgs) => string;
3
+ export default backUiPermissionsTmpl;
@@ -0,0 +1,2 @@
1
+ declare const uiNotFoundPageTmpl: () => string;
2
+ export default uiNotFoundPageTmpl;
@@ -0,0 +1,2 @@
1
+ declare const uiPermissionPageTmpl: () => string;
2
+ export default uiPermissionPageTmpl;
@@ -0,0 +1,2 @@
1
+ export declare const uiI18nIndexTmpl: (lang: string) => string;
2
+ export default uiI18nIndexTmpl;
@@ -0,0 +1,3 @@
1
+ export declare const validationMessageFields: readonly ["minLength", "maxLength", "minValue", "maxValue", "noSpaces", "noDigits", "password", "notFutureDate", "notPastDate", "required", "onlyLatinLetters", "onlyLatinLettersAndDigits", "onlyLatinLettersAndHyphen", "onlyLatinAndCyrillicLetters", "onlyLatinAndCyrillicLettersAndDigits", "onlyNumbers", "onlyLetters", "onlyIntegers", "exactLength", "datesInFilter", "emailFormat"];
2
+ export declare const uiI18nTypesTmpl: () => string;
3
+ export default uiI18nTypesTmpl;
@@ -0,0 +1,2 @@
1
+ export declare const uiI18nValidationTmpl: (lang: string) => string;
2
+ export default uiI18nValidationTmpl;
@@ -10,5 +10,6 @@ export declare const getLinkArrayEditComponent: (entity: Entity, field: LinkFiel
10
10
  source: string;
11
11
  label: string;
12
12
  }) => string;
13
+ export declare const getEditComponents: (entity: Entity, allEntities: Map<string, Entity>, field: Field, type: 'create' | 'edit' | 'filter', additionalProps?: string[]) => string[];
13
14
  export declare const getEditComponent: (entity: Entity, allEntities: Map<string, Entity>, field: Field, type: 'create' | 'edit' | 'filter', additionalProps?: string[]) => string;
14
15
  export declare const uiDefaultEditTmpl: ({ allEntities, entity, options, }: EntityWideGenerationArgs) => string;
@@ -0,0 +1,2 @@
1
+ declare const uiPermissionsTmpl: () => string;
2
+ export default uiPermissionsTmpl;