@zealamic/payload-auth-rbac-plugin 1.0.0-beta.1

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 (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +175 -0
  3. package/dist/collections/permission-actions/default-data.js +35 -0
  4. package/dist/collections/permission-actions/default-data.js.map +1 -0
  5. package/dist/collections/permission-actions/index.js +96 -0
  6. package/dist/collections/permission-actions/index.js.map +1 -0
  7. package/dist/collections/permission-actions/types.js +3 -0
  8. package/dist/collections/permission-actions/types.js.map +1 -0
  9. package/dist/collections/permission-features/default-data.js +29 -0
  10. package/dist/collections/permission-features/default-data.js.map +1 -0
  11. package/dist/collections/permission-features/index.js +82 -0
  12. package/dist/collections/permission-features/index.js.map +1 -0
  13. package/dist/collections/permission-features/types.js +3 -0
  14. package/dist/collections/permission-features/types.js.map +1 -0
  15. package/dist/collections/permissions/default-data.js +37 -0
  16. package/dist/collections/permissions/default-data.js.map +1 -0
  17. package/dist/collections/permissions/index.js +102 -0
  18. package/dist/collections/permissions/index.js.map +1 -0
  19. package/dist/collections/permissions/types.js +3 -0
  20. package/dist/collections/permissions/types.js.map +1 -0
  21. package/dist/collections/roles/default-data.js +44 -0
  22. package/dist/collections/roles/default-data.js.map +1 -0
  23. package/dist/collections/roles/hooks/sync-permission-matrix-draft.js +66 -0
  24. package/dist/collections/roles/hooks/sync-permission-matrix-draft.js.map +1 -0
  25. package/dist/collections/roles/index.js +122 -0
  26. package/dist/collections/roles/index.js.map +1 -0
  27. package/dist/collections/roles/types.js +3 -0
  28. package/dist/collections/roles/types.js.map +1 -0
  29. package/dist/collections/roles-permissions/default-data.js +27 -0
  30. package/dist/collections/roles-permissions/default-data.js.map +1 -0
  31. package/dist/collections/roles-permissions/index.js +75 -0
  32. package/dist/collections/roles-permissions/index.js.map +1 -0
  33. package/dist/collections/roles-permissions/types.js +3 -0
  34. package/dist/collections/roles-permissions/types.js.map +1 -0
  35. package/dist/collections/users/default-data.js +19 -0
  36. package/dist/collections/users/default-data.js.map +1 -0
  37. package/dist/collections/users/index.js +135 -0
  38. package/dist/collections/users/index.js.map +1 -0
  39. package/dist/collections/users/parent-path.js +210 -0
  40. package/dist/collections/users/parent-path.js.map +1 -0
  41. package/dist/collections/users/types.js +3 -0
  42. package/dist/collections/users/types.js.map +1 -0
  43. package/dist/components/role-permission-matrix-client/default-data.js +23 -0
  44. package/dist/components/role-permission-matrix-client/default-data.js.map +1 -0
  45. package/dist/components/role-permission-matrix-client/index.js +299 -0
  46. package/dist/components/role-permission-matrix-client/index.js.map +1 -0
  47. package/dist/components/role-permission-matrix-client/types.js +3 -0
  48. package/dist/components/role-permission-matrix-client/types.js.map +1 -0
  49. package/dist/endpoints/customEndpointHandler.js +7 -0
  50. package/dist/endpoints/customEndpointHandler.js.map +1 -0
  51. package/dist/exports/client.js +3 -0
  52. package/dist/exports/client.js.map +1 -0
  53. package/dist/exports/rsc.js +2 -0
  54. package/dist/exports/rsc.js.map +1 -0
  55. package/dist/general-types.d.js +2 -0
  56. package/dist/general-types.d.js.map +1 -0
  57. package/dist/index.js +184 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/lib/constants/general.js +3 -0
  60. package/dist/lib/constants/general.js.map +1 -0
  61. package/dist/lib/constants/index.js +16 -0
  62. package/dist/lib/constants/index.js.map +1 -0
  63. package/dist/lib/constants/permission-action.js +10 -0
  64. package/dist/lib/constants/permission-action.js.map +1 -0
  65. package/dist/lib/constants/permission-feature.js +6 -0
  66. package/dist/lib/constants/permission-feature.js.map +1 -0
  67. package/dist/lib/constants/permission.js +6 -0
  68. package/dist/lib/constants/permission.js.map +1 -0
  69. package/dist/lib/constants/role.js +11 -0
  70. package/dist/lib/constants/role.js.map +1 -0
  71. package/dist/lib/constants/user.js +3 -0
  72. package/dist/lib/constants/user.js.map +1 -0
  73. package/dist/lib/utils/access.js +452 -0
  74. package/dist/lib/utils/access.js.map +1 -0
  75. package/dist/lib/utils/data.js +7 -0
  76. package/dist/lib/utils/data.js.map +1 -0
  77. package/dist/lib/utils/fields.js +41 -0
  78. package/dist/lib/utils/fields.js.map +1 -0
  79. package/dist/lib/utils/index.js +6 -0
  80. package/dist/lib/utils/index.js.map +1 -0
  81. package/dist/lib/utils/localization.js +52 -0
  82. package/dist/lib/utils/localization.js.map +1 -0
  83. package/dist/types.js +10 -0
  84. package/dist/types.js.map +1 -0
  85. package/package.json +122 -0
@@ -0,0 +1,102 @@
1
+ import { STATUS } from "../../lib/constants/permission.js";
2
+ import { getArrayOfMergedFieldAffectingData, getSuperAdminAccess, toLocaleRecord, toSelectPlaceholder } from "../../lib/utils/index.js";
3
+ export const getPermissionsCollection = (params)=>{
4
+ const { translations = {}, access = {}, fields = [], labels = {}, admin = {} } = params || {};
5
+ const arrTranslationsKeys = Object.keys(translations);
6
+ const permissions = {
7
+ slug: "permissions",
8
+ labels: {
9
+ singular: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.labels?.singular),
10
+ plural: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.labels?.plural),
11
+ ...labels
12
+ },
13
+ admin: {
14
+ group: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.admin?.group),
15
+ useAsTitle: "name",
16
+ defaultColumns: [
17
+ "name",
18
+ "permissionFeature",
19
+ "permissionAction",
20
+ "status",
21
+ "updatedAt"
22
+ ],
23
+ ...admin
24
+ },
25
+ access: {
26
+ create: getSuperAdminAccess,
27
+ update: getSuperAdminAccess,
28
+ delete: getSuperAdminAccess,
29
+ read: getSuperAdminAccess,
30
+ readVersions: getSuperAdminAccess,
31
+ unlock: getSuperAdminAccess,
32
+ admin: ({ req })=>{
33
+ return getSuperAdminAccess({
34
+ req
35
+ });
36
+ },
37
+ ...access
38
+ },
39
+ fields: getArrayOfMergedFieldAffectingData({
40
+ fields,
41
+ defaultFields: [
42
+ {
43
+ name: "name",
44
+ type: "text",
45
+ required: true,
46
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.name?.label),
47
+ admin: {
48
+ placeholder: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.name?.placeholder)
49
+ }
50
+ },
51
+ {
52
+ name: "permissionFeature",
53
+ type: "relationship",
54
+ required: true,
55
+ relationTo: "permission-features",
56
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.permissionFeature?.label),
57
+ admin: {
58
+ placeholder: toSelectPlaceholder(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.permissionFeature?.placeholder)
59
+ }
60
+ },
61
+ {
62
+ name: "permissionAction",
63
+ type: "relationship",
64
+ required: true,
65
+ relationTo: "permission-actions",
66
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.permissionAction?.label),
67
+ admin: {
68
+ placeholder: toSelectPlaceholder(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.permissionAction?.placeholder)
69
+ }
70
+ },
71
+ {
72
+ name: "sortOrder",
73
+ type: "number",
74
+ required: false,
75
+ defaultValue: 0,
76
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.sortOrder?.label),
77
+ admin: {
78
+ placeholder: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.sortOrder?.placeholder)
79
+ }
80
+ },
81
+ {
82
+ name: "status",
83
+ type: "select",
84
+ required: true,
85
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.status?.label),
86
+ defaultValue: STATUS.ACTIVE,
87
+ options: Object.values(STATUS).map((status)=>({
88
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.status?.[`${status}Label`]),
89
+ value: status
90
+ })),
91
+ admin: {
92
+ placeholder: toSelectPlaceholder(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.status?.placeholder)
93
+ }
94
+ }
95
+ ]
96
+ }),
97
+ timestamps: true
98
+ };
99
+ return permissions;
100
+ };
101
+
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/permissions/index.ts"],"sourcesContent":["import type { CollectionConfig } from \"payload\";\nimport { STATUS } from \"../../lib/constants/permission.js\";\nimport {\n getArrayOfMergedFieldAffectingData,\n getSuperAdminAccess,\n toLocaleRecord,\n toSelectPlaceholder,\n} from \"../../lib/utils/index.js\";\nimport type { PermissionsCollectionParams } from \"./types.js\";\n\nexport const getPermissionsCollection = (\n params: PermissionsCollectionParams,\n) => {\n const {\n translations = {},\n access = {},\n fields = [],\n labels = {},\n admin = {},\n } = params || {};\n const arrTranslationsKeys = Object.keys(translations);\n const permissions: CollectionConfig = {\n slug: \"permissions\",\n labels: {\n singular: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.labels?.singular,\n ),\n plural: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.labels?.plural,\n ),\n ...labels,\n },\n admin: {\n group: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.admin?.group,\n ),\n useAsTitle: \"name\",\n defaultColumns: [\n \"name\",\n \"permissionFeature\",\n \"permissionAction\",\n \"status\",\n \"updatedAt\",\n ],\n ...admin,\n },\n access: {\n create: getSuperAdminAccess,\n update: getSuperAdminAccess,\n delete: getSuperAdminAccess,\n read: getSuperAdminAccess,\n readVersions: getSuperAdminAccess,\n unlock: getSuperAdminAccess,\n admin: ({ req }) => {\n return getSuperAdminAccess({ req });\n },\n ...access,\n },\n fields: getArrayOfMergedFieldAffectingData({\n fields,\n defaultFields: [\n {\n name: \"name\",\n type: \"text\",\n required: true,\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.name?.label,\n ),\n admin: {\n placeholder: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.name?.placeholder,\n ),\n },\n },\n {\n name: \"permissionFeature\",\n type: \"relationship\",\n required: true,\n relationTo: \"permission-features\",\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.permissionFeature?.label,\n ),\n admin: {\n placeholder: toSelectPlaceholder(\n arrTranslationsKeys,\n (locale) =>\n translations[locale]?.fields?.permissionFeature?.placeholder,\n ),\n },\n },\n {\n name: \"permissionAction\",\n type: \"relationship\",\n required: true,\n relationTo: \"permission-actions\",\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.permissionAction?.label,\n ),\n admin: {\n placeholder: toSelectPlaceholder(\n arrTranslationsKeys,\n (locale) =>\n translations[locale]?.fields?.permissionAction?.placeholder,\n ),\n },\n },\n {\n name: \"sortOrder\",\n type: \"number\",\n required: false,\n defaultValue: 0,\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.sortOrder?.label,\n ),\n admin: {\n placeholder: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.sortOrder?.placeholder,\n ),\n },\n },\n {\n name: \"status\",\n type: \"select\",\n required: true,\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.status?.label,\n ),\n defaultValue: STATUS.ACTIVE,\n options: Object.values(STATUS).map((status) => ({\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) =>\n translations[locale]?.fields?.status?.[`${status}Label`],\n ),\n value: status,\n })),\n admin: {\n placeholder: toSelectPlaceholder(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.status?.placeholder,\n ),\n },\n },\n ],\n }),\n timestamps: true,\n };\n\n return permissions;\n};\n"],"names":["STATUS","getArrayOfMergedFieldAffectingData","getSuperAdminAccess","toLocaleRecord","toSelectPlaceholder","getPermissionsCollection","params","translations","access","fields","labels","admin","arrTranslationsKeys","Object","keys","permissions","slug","singular","locale","plural","group","useAsTitle","defaultColumns","create","update","delete","read","readVersions","unlock","req","defaultFields","name","type","required","label","placeholder","relationTo","permissionFeature","permissionAction","defaultValue","sortOrder","status","ACTIVE","options","values","map","value","timestamps"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/permissions/types.ts"],"sourcesContent":["import type { CollectionConfig, Field } from \"payload\";\nimport { STATUS } from \"src/lib/constants/permission.js\";\n\nexport type PermissionsCollectionTranslations = {\n [locale: string]: {\n labels?: {\n singular?: string;\n plural?: string;\n };\n admin?: {\n group?: string;\n };\n fields?: {\n name?: {\n label?: string;\n placeholder?: string;\n };\n permissionFeature?: {\n label?: string;\n placeholder?: string;\n };\n permissionAction?: {\n label?: string;\n placeholder?: string;\n };\n sortOrder?: {\n label?: string;\n placeholder?: string;\n };\n status?: {\n label?: string;\n placeholder?: string;\n activeLabel?: string;\n inactiveLabel?: string;\n };\n };\n };\n};\n\nexport type PermissionsCollectionParams = {\n translations?: PermissionsCollectionTranslations;\n fields?: Field[];\n access?: CollectionConfig[\"access\"];\n labels?: CollectionConfig[\"labels\"];\n admin?: CollectionConfig[\"admin\"];\n};\n\nexport type PermissionItemRef = string | number | { id?: string | number };\n\nexport type PermissionStatus = (typeof STATUS)[keyof typeof STATUS];\n\nexport type Permission = {\n id: string | number;\n permissionFeature?: PermissionItemRef;\n permissionAction?: PermissionItemRef;\n status?: PermissionStatus | null;\n};\n"],"names":[],"mappings":"AAmDA,WAKE"}
@@ -0,0 +1,44 @@
1
+ export const rolesDefaultTranslations = {
2
+ en: {
3
+ labels: {
4
+ singular: "Role",
5
+ plural: "Roles"
6
+ },
7
+ admin: {
8
+ group: "System"
9
+ },
10
+ fields: {
11
+ code: {
12
+ label: "Code",
13
+ placeholder: "Enter code"
14
+ },
15
+ name: {
16
+ label: "Name",
17
+ placeholder: "Enter name"
18
+ },
19
+ description: {
20
+ label: "Description",
21
+ placeholder: "Enter description"
22
+ },
23
+ status: {
24
+ label: "Status",
25
+ placeholder: "Select status",
26
+ activeLabel: "Active",
27
+ inactiveLabel: "Inactive"
28
+ },
29
+ dataScope: {
30
+ label: "Data Scope",
31
+ placeholder: "Select data scope",
32
+ ownLabel: "Own",
33
+ allLabel: "All",
34
+ hierarchyLabel: "Hierarchy"
35
+ },
36
+ permissionMatrix: {
37
+ label: "Permission Matrix",
38
+ placeholder: "Select permission matrix"
39
+ }
40
+ }
41
+ }
42
+ };
43
+
44
+ //# sourceMappingURL=default-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/roles/default-data.ts"],"sourcesContent":["import type { RolesCollectionTranslations } from \"./types.js\"\n\nexport const rolesDefaultTranslations: RolesCollectionTranslations = {\n en: {\n labels: {\n singular: \"Role\",\n plural: \"Roles\",\n },\n admin: {\n group: \"System\",\n },\n fields: {\n code: {\n label: \"Code\",\n placeholder: \"Enter code\",\n },\n name: {\n label: \"Name\",\n placeholder: \"Enter name\",\n },\n description: {\n label: \"Description\",\n placeholder: \"Enter description\",\n },\n status: {\n label: \"Status\",\n placeholder: \"Select status\",\n activeLabel: \"Active\",\n inactiveLabel: \"Inactive\",\n },\n dataScope: {\n label: \"Data Scope\",\n placeholder: \"Select data scope\",\n ownLabel: \"Own\",\n allLabel: \"All\",\n hierarchyLabel: \"Hierarchy\",\n },\n permissionMatrix: {\n label: \"Permission Matrix\",\n placeholder: \"Select permission matrix\",\n },\n },\n },\n}\n"],"names":["rolesDefaultTranslations","en","labels","singular","plural","admin","group","fields","code","label","placeholder","name","description","status","activeLabel","inactiveLabel","dataScope","ownLabel","allLabel","hierarchyLabel","permissionMatrix"],"mappings":"AAEA,OAAO,MAAMA,2BAAwD;IACnEC,IAAI;QACFC,QAAQ;YACNC,UAAU;YACVC,QAAQ;QACV;QACAC,OAAO;YACLC,OAAO;QACT;QACAC,QAAQ;YACNC,MAAM;gBACJC,OAAO;gBACPC,aAAa;YACf;YACAC,MAAM;gBACJF,OAAO;gBACPC,aAAa;YACf;YACAE,aAAa;gBACXH,OAAO;gBACPC,aAAa;YACf;YACAG,QAAQ;gBACNJ,OAAO;gBACPC,aAAa;gBACbI,aAAa;gBACbC,eAAe;YACjB;YACAC,WAAW;gBACTP,OAAO;gBACPC,aAAa;gBACbO,UAAU;gBACVC,UAAU;gBACVC,gBAAgB;YAClB;YACAC,kBAAkB;gBAChBX,OAAO;gBACPC,aAAa;YACf;QACF;IACF;AACF,EAAC"}
@@ -0,0 +1,66 @@
1
+ const isPermissionMatrixDraft = (value)=>{
2
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
3
+ return false;
4
+ }
5
+ return Object.values(value).every((entry)=>typeof entry === "boolean");
6
+ };
7
+ /**
8
+ * Persists `permissionMatrixDraft` on the role document into `roles-permissions` rows.
9
+ * RBAC checks use `roles-permissions`, not the JSON draft field.
10
+ */ export const syncPermissionMatrixDraftAfterChange = async ({ doc, req })=>{
11
+ if (!doc.id || !isPermissionMatrixDraft(doc.permissionMatrixDraft)) {
12
+ return;
13
+ }
14
+ const roleID = doc.id;
15
+ for (const [permissionID, enabled] of Object.entries(doc.permissionMatrixDraft)){
16
+ if (!permissionID) {
17
+ continue;
18
+ }
19
+ const existing = await req.payload.find({
20
+ collection: "roles-permissions",
21
+ depth: 0,
22
+ limit: 1,
23
+ req,
24
+ where: {
25
+ and: [
26
+ {
27
+ role: {
28
+ equals: roleID
29
+ }
30
+ },
31
+ {
32
+ permission: {
33
+ equals: permissionID
34
+ }
35
+ }
36
+ ]
37
+ }
38
+ });
39
+ const row = existing.docs[0];
40
+ if (row?.id) {
41
+ if (row.enabled === enabled) {
42
+ continue;
43
+ }
44
+ await req.payload.update({
45
+ id: row.id,
46
+ collection: "roles-permissions",
47
+ data: {
48
+ enabled
49
+ },
50
+ req
51
+ });
52
+ continue;
53
+ }
54
+ await req.payload.create({
55
+ collection: "roles-permissions",
56
+ data: {
57
+ role: roleID,
58
+ permission: permissionID,
59
+ enabled
60
+ },
61
+ req
62
+ });
63
+ }
64
+ };
65
+
66
+ //# sourceMappingURL=sync-permission-matrix-draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/collections/roles/hooks/sync-permission-matrix-draft.ts"],"sourcesContent":["import type { CollectionAfterChangeHook } from \"payload\";\n\ntype PermissionMatrixDraft = Record<string, boolean>;\n\nconst isPermissionMatrixDraft = (\n value: unknown,\n): value is PermissionMatrixDraft => {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return false;\n }\n\n return Object.values(value).every((entry) => typeof entry === \"boolean\");\n};\n\n/**\n * Persists `permissionMatrixDraft` on the role document into `roles-permissions` rows.\n * RBAC checks use `roles-permissions`, not the JSON draft field.\n */\nexport const syncPermissionMatrixDraftAfterChange: CollectionAfterChangeHook =\n async ({ doc, req }) => {\n if (!doc.id || !isPermissionMatrixDraft(doc.permissionMatrixDraft)) {\n return;\n }\n\n const roleID = doc.id;\n\n for (const [permissionID, enabled] of Object.entries(\n doc.permissionMatrixDraft,\n )) {\n if (!permissionID) {\n continue;\n }\n\n const existing = await req.payload.find({\n collection: \"roles-permissions\",\n depth: 0,\n limit: 1,\n req,\n where: {\n and: [\n { role: { equals: roleID } },\n { permission: { equals: permissionID } },\n ],\n },\n });\n\n const row = existing.docs[0];\n\n if (row?.id) {\n if (row.enabled === enabled) {\n continue;\n }\n\n await req.payload.update({\n id: row.id,\n collection: \"roles-permissions\",\n data: { enabled },\n req,\n });\n continue;\n }\n\n await req.payload.create({\n collection: \"roles-permissions\",\n data: {\n role: roleID,\n permission: permissionID,\n enabled,\n },\n req,\n });\n }\n };\n"],"names":["isPermissionMatrixDraft","value","Array","isArray","Object","values","every","entry","syncPermissionMatrixDraftAfterChange","doc","req","id","permissionMatrixDraft","roleID","permissionID","enabled","entries","existing","payload","find","collection","depth","limit","where","and","role","equals","permission","row","docs","update","data","create"],"mappings":"AAIA,MAAMA,0BAA0B,CAC9BC;IAEA,IAAI,CAACA,SAAS,OAAOA,UAAU,YAAYC,MAAMC,OAAO,CAACF,QAAQ;QAC/D,OAAO;IACT;IAEA,OAAOG,OAAOC,MAAM,CAACJ,OAAOK,KAAK,CAAC,CAACC,QAAU,OAAOA,UAAU;AAChE;AAEA;;;CAGC,GACD,OAAO,MAAMC,uCACX,OAAO,EAAEC,GAAG,EAAEC,GAAG,EAAE;IACjB,IAAI,CAACD,IAAIE,EAAE,IAAI,CAACX,wBAAwBS,IAAIG,qBAAqB,GAAG;QAClE;IACF;IAEA,MAAMC,SAASJ,IAAIE,EAAE;IAErB,KAAK,MAAM,CAACG,cAAcC,QAAQ,IAAIX,OAAOY,OAAO,CAClDP,IAAIG,qBAAqB,EACxB;QACD,IAAI,CAACE,cAAc;YACjB;QACF;QAEA,MAAMG,WAAW,MAAMP,IAAIQ,OAAO,CAACC,IAAI,CAAC;YACtCC,YAAY;YACZC,OAAO;YACPC,OAAO;YACPZ;YACAa,OAAO;gBACLC,KAAK;oBACH;wBAAEC,MAAM;4BAAEC,QAAQb;wBAAO;oBAAE;oBAC3B;wBAAEc,YAAY;4BAAED,QAAQZ;wBAAa;oBAAE;iBACxC;YACH;QACF;QAEA,MAAMc,MAAMX,SAASY,IAAI,CAAC,EAAE;QAE5B,IAAID,KAAKjB,IAAI;YACX,IAAIiB,IAAIb,OAAO,KAAKA,SAAS;gBAC3B;YACF;YAEA,MAAML,IAAIQ,OAAO,CAACY,MAAM,CAAC;gBACvBnB,IAAIiB,IAAIjB,EAAE;gBACVS,YAAY;gBACZW,MAAM;oBAAEhB;gBAAQ;gBAChBL;YACF;YACA;QACF;QAEA,MAAMA,IAAIQ,OAAO,CAACc,MAAM,CAAC;YACvBZ,YAAY;YACZW,MAAM;gBACJN,MAAMZ;gBACNc,YAAYb;gBACZC;YACF;YACAL;QACF;IACF;AACF,EAAE"}
@@ -0,0 +1,122 @@
1
+ import { DATA_SCOPE, STATUS } from "../../lib/constants/role.js";
2
+ import { getArrayOfMergedFieldAffectingData, getSuperAdminAccess, toLocaleRecord, toSelectPlaceholder } from "../../lib/utils/index.js";
3
+ import { syncPermissionMatrixDraftAfterChange } from "./hooks/sync-permission-matrix-draft.js";
4
+ export const getRolesCollection = (params)=>{
5
+ const { translations = {}, access = {}, fields = [], labels = {}, admin = {} } = params || {};
6
+ const arrTranslationsKeys = Object.keys(translations);
7
+ const roles = {
8
+ slug: "roles",
9
+ labels: {
10
+ singular: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.labels?.singular),
11
+ plural: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.labels?.plural),
12
+ ...labels
13
+ },
14
+ admin: {
15
+ group: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.admin?.group),
16
+ useAsTitle: "name",
17
+ defaultColumns: [
18
+ "code",
19
+ "name",
20
+ "description",
21
+ "status",
22
+ "updatedAt"
23
+ ],
24
+ ...admin
25
+ },
26
+ access: {
27
+ create: getSuperAdminAccess,
28
+ update: getSuperAdminAccess,
29
+ delete: getSuperAdminAccess,
30
+ read: getSuperAdminAccess,
31
+ readVersions: getSuperAdminAccess,
32
+ unlock: getSuperAdminAccess,
33
+ admin: ({ req })=>{
34
+ return getSuperAdminAccess({
35
+ req
36
+ });
37
+ },
38
+ ...access
39
+ },
40
+ hooks: {
41
+ afterChange: [
42
+ syncPermissionMatrixDraftAfterChange
43
+ ]
44
+ },
45
+ fields: getArrayOfMergedFieldAffectingData({
46
+ fields,
47
+ defaultFields: [
48
+ {
49
+ name: "code",
50
+ type: "text",
51
+ required: true,
52
+ unique: true,
53
+ index: true,
54
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.code?.label),
55
+ admin: {
56
+ placeholder: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.code?.placeholder)
57
+ }
58
+ },
59
+ {
60
+ name: "name",
61
+ type: "text",
62
+ required: true,
63
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.name?.label),
64
+ admin: {
65
+ placeholder: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.name?.placeholder)
66
+ }
67
+ },
68
+ {
69
+ name: "description",
70
+ type: "text",
71
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.description?.label),
72
+ admin: {
73
+ placeholder: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.description?.placeholder)
74
+ }
75
+ },
76
+ {
77
+ name: "status",
78
+ type: "select",
79
+ required: true,
80
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.status?.label),
81
+ defaultValue: STATUS.ACTIVE,
82
+ options: Object.values(STATUS).map((status)=>({
83
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.status?.[`${status}Label`]),
84
+ value: status
85
+ })),
86
+ admin: {
87
+ placeholder: toSelectPlaceholder(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.status?.placeholder)
88
+ }
89
+ },
90
+ {
91
+ name: "dataScope",
92
+ type: "select",
93
+ required: true,
94
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.dataScope?.label),
95
+ defaultValue: DATA_SCOPE.OWN,
96
+ options: Object.values(DATA_SCOPE).map((dataScope)=>({
97
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.dataScope?.[`${dataScope}Label`]),
98
+ value: dataScope
99
+ })),
100
+ admin: {
101
+ placeholder: toSelectPlaceholder(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.dataScope?.placeholder)
102
+ }
103
+ },
104
+ {
105
+ name: "permissionMatrixDraft",
106
+ type: "json",
107
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.permissionMatrix?.label),
108
+ admin: {
109
+ components: {
110
+ Field: "payload-auth-rbac-plugin/client#RolePermissionMatrixClient"
111
+ },
112
+ condition: (_, __, { operation })=>operation === "update"
113
+ }
114
+ }
115
+ ]
116
+ }),
117
+ timestamps: true
118
+ };
119
+ return roles;
120
+ };
121
+
122
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/roles/index.ts"],"sourcesContent":["import type { CollectionConfig, Condition } from \"payload\";\nimport { DATA_SCOPE, STATUS } from \"../../lib/constants/role.js\";\nimport {\n getArrayOfMergedFieldAffectingData,\n getSuperAdminAccess,\n toLocaleRecord,\n toSelectPlaceholder,\n} from \"../../lib/utils/index.js\";\nimport { syncPermissionMatrixDraftAfterChange } from \"./hooks/sync-permission-matrix-draft.js\";\nimport type { RolesCollectionParams } from \"./types.js\";\n\nexport const getRolesCollection = (params: RolesCollectionParams) => {\n const {\n translations = {},\n access = {},\n fields = [],\n labels = {},\n admin = {},\n } = params || {};\n const arrTranslationsKeys = Object.keys(translations);\n const roles: CollectionConfig = {\n slug: \"roles\",\n labels: {\n singular: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.labels?.singular,\n ),\n plural: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.labels?.plural,\n ),\n ...labels,\n },\n admin: {\n group: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.admin?.group,\n ),\n useAsTitle: \"name\",\n defaultColumns: [\"code\", \"name\", \"description\", \"status\", \"updatedAt\"],\n ...admin,\n },\n access: {\n create: getSuperAdminAccess,\n update: getSuperAdminAccess,\n delete: getSuperAdminAccess,\n read: getSuperAdminAccess,\n readVersions: getSuperAdminAccess,\n unlock: getSuperAdminAccess,\n admin: ({ req }) => {\n return getSuperAdminAccess({ req });\n },\n ...access,\n },\n hooks: {\n afterChange: [syncPermissionMatrixDraftAfterChange],\n },\n fields: getArrayOfMergedFieldAffectingData({\n fields,\n defaultFields: [\n {\n name: \"code\",\n type: \"text\",\n required: true,\n unique: true,\n index: true,\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.code?.label,\n ),\n admin: {\n placeholder: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.code?.placeholder,\n ),\n },\n },\n {\n name: \"name\",\n type: \"text\",\n required: true,\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.name?.label,\n ),\n admin: {\n placeholder: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.name?.placeholder,\n ),\n },\n },\n {\n name: \"description\",\n type: \"text\",\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.description?.label,\n ),\n admin: {\n placeholder: toLocaleRecord(\n arrTranslationsKeys,\n (locale) =>\n translations[locale]?.fields?.description?.placeholder,\n ),\n },\n },\n {\n name: \"status\",\n type: \"select\",\n required: true,\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.status?.label,\n ),\n defaultValue: STATUS.ACTIVE,\n options: Object.values(STATUS).map((status) => ({\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) =>\n translations[locale]?.fields?.status?.[`${status}Label`],\n ),\n value: status,\n })),\n admin: {\n placeholder: toSelectPlaceholder(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.status?.placeholder,\n ),\n },\n },\n {\n name: \"dataScope\",\n type: \"select\",\n required: true,\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.dataScope?.label,\n ),\n defaultValue: DATA_SCOPE.OWN,\n options: Object.values(DATA_SCOPE).map((dataScope) => ({\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) =>\n translations[locale]?.fields?.dataScope?.[`${dataScope}Label`],\n ),\n value: dataScope,\n })),\n admin: {\n placeholder: toSelectPlaceholder(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.dataScope?.placeholder,\n ),\n },\n },\n {\n name: \"permissionMatrixDraft\",\n type: \"json\",\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.permissionMatrix?.label,\n ),\n admin: {\n components: {\n Field:\n \"payload-auth-rbac-plugin/client#RolePermissionMatrixClient\",\n },\n condition: ((_, __, { operation }) =>\n operation === \"update\") satisfies Condition,\n },\n },\n ],\n }),\n timestamps: true,\n };\n\n return roles;\n};\n"],"names":["DATA_SCOPE","STATUS","getArrayOfMergedFieldAffectingData","getSuperAdminAccess","toLocaleRecord","toSelectPlaceholder","syncPermissionMatrixDraftAfterChange","getRolesCollection","params","translations","access","fields","labels","admin","arrTranslationsKeys","Object","keys","roles","slug","singular","locale","plural","group","useAsTitle","defaultColumns","create","update","delete","read","readVersions","unlock","req","hooks","afterChange","defaultFields","name","type","required","unique","index","label","code","placeholder","description","status","defaultValue","ACTIVE","options","values","map","value","dataScope","OWN","permissionMatrix","components","Field","condition","_","__","operation","timestamps"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/roles/types.ts"],"sourcesContent":["import type { CollectionConfig, Field } from \"payload\"\nimport type { DATA_SCOPE, STATUS } from \"../../lib/constants/role.js\"\n\nexport type DataScope = (typeof DATA_SCOPE)[keyof typeof DATA_SCOPE]\nexport type RoleStatus = (typeof STATUS)[keyof typeof STATUS]\n\nexport type RolesCollectionTranslations = {\n [locale: string]: {\n labels?: {\n singular?: string\n plural?: string\n }\n admin?: {\n group?: string\n }\n fields?: {\n code?: {\n label?: string\n placeholder?: string\n }\n name?: {\n label?: string\n placeholder?: string\n }\n description?: {\n label?: string\n placeholder?: string\n }\n status?: {\n label?: string\n placeholder?: string\n activeLabel?: string\n inactiveLabel?: string\n }\n dataScope?: {\n label?: string\n placeholder?: string\n allLabel?: string\n ownLabel?: string\n hierarchyLabel?: string\n }\n permissionMatrix?: {\n label?: string\n placeholder?: string\n }\n }\n }\n}\n\nexport type RolesCollectionParams = {\n translations?: RolesCollectionTranslations\n fields?: Field[]\n access?: CollectionConfig[\"access\"]\n labels?: CollectionConfig[\"labels\"]\n admin?: CollectionConfig[\"admin\"]\n}\n"],"names":[],"mappings":"AAiDA,WAMC"}
@@ -0,0 +1,27 @@
1
+ export const rolesPermissionsDefaultTranslations = {
2
+ en: {
3
+ labels: {
4
+ singular: "Role Permission",
5
+ plural: "Role Permissions"
6
+ },
7
+ admin: {
8
+ group: "System"
9
+ },
10
+ fields: {
11
+ role: {
12
+ label: "Role",
13
+ placeholder: "Select role"
14
+ },
15
+ permission: {
16
+ label: "Permission",
17
+ placeholder: "Select permission"
18
+ },
19
+ enabled: {
20
+ label: "Enabled",
21
+ placeholder: "Check enabled"
22
+ }
23
+ }
24
+ }
25
+ };
26
+
27
+ //# sourceMappingURL=default-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/roles-permissions/default-data.ts"],"sourcesContent":["import type { RolesPermissionsCollectionTranslations } from \"./types.js\";\n\nexport const rolesPermissionsDefaultTranslations: RolesPermissionsCollectionTranslations =\n {\n en: {\n labels: {\n singular: \"Role Permission\",\n plural: \"Role Permissions\",\n },\n admin: {\n group: \"System\",\n },\n fields: {\n role: {\n label: \"Role\",\n placeholder: \"Select role\",\n },\n permission: {\n label: \"Permission\",\n placeholder: \"Select permission\",\n },\n enabled: {\n label: \"Enabled\",\n placeholder: \"Check enabled\",\n },\n },\n },\n };\n"],"names":["rolesPermissionsDefaultTranslations","en","labels","singular","plural","admin","group","fields","role","label","placeholder","permission","enabled"],"mappings":"AAEA,OAAO,MAAMA,sCACX;IACEC,IAAI;QACFC,QAAQ;YACNC,UAAU;YACVC,QAAQ;QACV;QACAC,OAAO;YACLC,OAAO;QACT;QACAC,QAAQ;YACNC,MAAM;gBACJC,OAAO;gBACPC,aAAa;YACf;YACAC,YAAY;gBACVF,OAAO;gBACPC,aAAa;YACf;YACAE,SAAS;gBACPH,OAAO;gBACPC,aAAa;YACf;QACF;IACF;AACF,EAAE"}
@@ -0,0 +1,75 @@
1
+ import { getArrayOfMergedFieldAffectingData, getSuperAdminAccess, toLocaleRecord, toSelectPlaceholder } from "../../lib/utils/index.js";
2
+ export const getRolesPermissionsCollection = (params)=>{
3
+ const { translations = {}, access = {}, fields = [], labels = {}, admin = {} } = params || {};
4
+ const arrTranslationsKeys = Object.keys(translations);
5
+ const rolesPermissions = {
6
+ slug: "roles-permissions",
7
+ labels: {
8
+ singular: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.labels?.singular),
9
+ plural: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.labels?.plural),
10
+ ...labels
11
+ },
12
+ admin: {
13
+ group: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.admin?.group),
14
+ useAsTitle: "role",
15
+ defaultColumns: [
16
+ "role",
17
+ "permission",
18
+ "enabled",
19
+ "updatedAt"
20
+ ],
21
+ hidden: true,
22
+ ...admin
23
+ },
24
+ access: {
25
+ create: getSuperAdminAccess,
26
+ update: getSuperAdminAccess,
27
+ delete: getSuperAdminAccess,
28
+ read: getSuperAdminAccess,
29
+ readVersions: getSuperAdminAccess,
30
+ unlock: getSuperAdminAccess,
31
+ admin: ({ req })=>{
32
+ return getSuperAdminAccess({
33
+ req
34
+ });
35
+ },
36
+ ...access
37
+ },
38
+ fields: getArrayOfMergedFieldAffectingData({
39
+ fields,
40
+ defaultFields: [
41
+ {
42
+ name: "role",
43
+ type: "relationship",
44
+ required: true,
45
+ relationTo: "roles",
46
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.role?.label),
47
+ admin: {
48
+ placeholder: toSelectPlaceholder(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.role?.placeholder)
49
+ }
50
+ },
51
+ {
52
+ name: "permission",
53
+ type: "relationship",
54
+ relationTo: "permissions",
55
+ required: true,
56
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.permission?.label),
57
+ admin: {
58
+ placeholder: toSelectPlaceholder(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.permission?.placeholder)
59
+ }
60
+ },
61
+ {
62
+ name: "enabled",
63
+ type: "checkbox",
64
+ required: false,
65
+ defaultValue: true,
66
+ label: toLocaleRecord(arrTranslationsKeys, (locale)=>translations[locale]?.fields?.enabled?.label)
67
+ }
68
+ ]
69
+ }),
70
+ timestamps: true
71
+ };
72
+ return rolesPermissions;
73
+ };
74
+
75
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/roles-permissions/index.ts"],"sourcesContent":["import type { CollectionConfig } from \"payload\";\nimport {\n getArrayOfMergedFieldAffectingData,\n getSuperAdminAccess,\n toLocaleRecord,\n toSelectPlaceholder,\n} from \"../../lib/utils/index.js\";\nimport type { RolesPermissionsCollectionParams } from \"./types.js\";\n\nexport const getRolesPermissionsCollection = (\n params: RolesPermissionsCollectionParams,\n) => {\n const {\n translations = {},\n access = {},\n fields = [],\n labels = {},\n admin = {},\n } = params || {};\n const arrTranslationsKeys = Object.keys(translations);\n const rolesPermissions: CollectionConfig = {\n slug: \"roles-permissions\",\n labels: {\n singular: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.labels?.singular,\n ),\n plural: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.labels?.plural,\n ),\n ...labels,\n },\n admin: {\n group: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.admin?.group,\n ),\n useAsTitle: \"role\",\n defaultColumns: [\"role\", \"permission\", \"enabled\", \"updatedAt\"],\n hidden: true,\n ...admin,\n },\n access: {\n create: getSuperAdminAccess,\n update: getSuperAdminAccess,\n delete: getSuperAdminAccess,\n read: getSuperAdminAccess,\n readVersions: getSuperAdminAccess,\n unlock: getSuperAdminAccess,\n admin: ({ req }) => {\n return getSuperAdminAccess({ req });\n },\n ...access,\n },\n fields: getArrayOfMergedFieldAffectingData({\n fields,\n defaultFields: [\n {\n name: \"role\",\n type: \"relationship\",\n required: true,\n relationTo: \"roles\",\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.role?.label,\n ),\n admin: {\n placeholder: toSelectPlaceholder(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.role?.placeholder,\n ),\n },\n },\n {\n name: \"permission\",\n type: \"relationship\",\n relationTo: \"permissions\",\n required: true,\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.permission?.label,\n ),\n admin: {\n placeholder: toSelectPlaceholder(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.permission?.placeholder,\n ),\n },\n },\n {\n name: \"enabled\",\n type: \"checkbox\",\n required: false,\n defaultValue: true,\n label: toLocaleRecord(\n arrTranslationsKeys,\n (locale) => translations[locale]?.fields?.enabled?.label,\n ),\n },\n ],\n }),\n timestamps: true,\n };\n\n return rolesPermissions;\n};\n"],"names":["getArrayOfMergedFieldAffectingData","getSuperAdminAccess","toLocaleRecord","toSelectPlaceholder","getRolesPermissionsCollection","params","translations","access","fields","labels","admin","arrTranslationsKeys","Object","keys","rolesPermissions","slug","singular","locale","plural","group","useAsTitle","defaultColumns","hidden","create","update","delete","read","readVersions","unlock","req","defaultFields","name","type","required","relationTo","label","role","placeholder","permission","defaultValue","enabled","timestamps"],"mappings":"AACA,SACEA,kCAAkC,EAClCC,mBAAmB,EACnBC,cAAc,EACdC,mBAAmB,QACd,2BAA2B;AAGlC,OAAO,MAAMC,gCAAgC,CAC3CC;IAEA,MAAM,EACJC,eAAe,CAAC,CAAC,EACjBC,SAAS,CAAC,CAAC,EACXC,SAAS,EAAE,EACXC,SAAS,CAAC,CAAC,EACXC,QAAQ,CAAC,CAAC,EACX,GAAGL,UAAU,CAAC;IACf,MAAMM,sBAAsBC,OAAOC,IAAI,CAACP;IACxC,MAAMQ,mBAAqC;QACzCC,MAAM;QACNN,QAAQ;YACNO,UAAUd,eACRS,qBACA,CAACM,SAAWX,YAAY,CAACW,OAAO,EAAER,QAAQO;YAE5CE,QAAQhB,eACNS,qBACA,CAACM,SAAWX,YAAY,CAACW,OAAO,EAAER,QAAQS;YAE5C,GAAGT,MAAM;QACX;QACAC,OAAO;YACLS,OAAOjB,eACLS,qBACA,CAACM,SAAWX,YAAY,CAACW,OAAO,EAAEP,OAAOS;YAE3CC,YAAY;YACZC,gBAAgB;gBAAC;gBAAQ;gBAAc;gBAAW;aAAY;YAC9DC,QAAQ;YACR,GAAGZ,KAAK;QACV;QACAH,QAAQ;YACNgB,QAAQtB;YACRuB,QAAQvB;YACRwB,QAAQxB;YACRyB,MAAMzB;YACN0B,cAAc1B;YACd2B,QAAQ3B;YACRS,OAAO,CAAC,EAAEmB,GAAG,EAAE;gBACb,OAAO5B,oBAAoB;oBAAE4B;gBAAI;YACnC;YACA,GAAGtB,MAAM;QACX;QACAC,QAAQR,mCAAmC;YACzCQ;YACAsB,eAAe;gBACb;oBACEC,MAAM;oBACNC,MAAM;oBACNC,UAAU;oBACVC,YAAY;oBACZC,OAAOjC,eACLS,qBACA,CAACM,SAAWX,YAAY,CAACW,OAAO,EAAET,QAAQ4B,MAAMD;oBAElDzB,OAAO;wBACL2B,aAAalC,oBACXQ,qBACA,CAACM,SAAWX,YAAY,CAACW,OAAO,EAAET,QAAQ4B,MAAMC;oBAEpD;gBACF;gBACA;oBACEN,MAAM;oBACNC,MAAM;oBACNE,YAAY;oBACZD,UAAU;oBACVE,OAAOjC,eACLS,qBACA,CAACM,SAAWX,YAAY,CAACW,OAAO,EAAET,QAAQ8B,YAAYH;oBAExDzB,OAAO;wBACL2B,aAAalC,oBACXQ,qBACA,CAACM,SAAWX,YAAY,CAACW,OAAO,EAAET,QAAQ8B,YAAYD;oBAE1D;gBACF;gBACA;oBACEN,MAAM;oBACNC,MAAM;oBACNC,UAAU;oBACVM,cAAc;oBACdJ,OAAOjC,eACLS,qBACA,CAACM,SAAWX,YAAY,CAACW,OAAO,EAAET,QAAQgC,SAASL;gBAEvD;aACD;QACH;QACAM,YAAY;IACd;IAEA,OAAO3B;AACT,EAAE"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/roles-permissions/types.ts"],"sourcesContent":["import type { CollectionConfig, Field } from \"payload\";\n\nexport type RolesPermissionsCollectionTranslations = {\n [locale: string]: {\n labels?: {\n singular?: string;\n plural?: string;\n };\n admin?: {\n group?: string;\n };\n fields?: {\n role?: {\n label?: string;\n placeholder?: string;\n };\n permission?: {\n label?: string;\n placeholder?: string;\n };\n enabled?: {\n label?: string;\n placeholder?: string;\n };\n };\n };\n};\n\nexport type RolesPermissionsCollectionParams = {\n translations?: RolesPermissionsCollectionTranslations;\n fields?: Field[];\n access?: CollectionConfig[\"access\"];\n labels?: CollectionConfig[\"labels\"];\n admin?: CollectionConfig[\"admin\"];\n};\n\nexport type RolePermission = {\n id: string | number;\n role?: string | number;\n permission?: string | number;\n enabled?: boolean;\n};\n"],"names":[],"mappings":"AAoCA,WAKE"}
@@ -0,0 +1,19 @@
1
+ export const usersDefaultTranslations = {
2
+ en: {
3
+ fields: {
4
+ isSuperAdmin: {
5
+ label: "Super Admin"
6
+ },
7
+ roles: {
8
+ label: "Roles",
9
+ placeholder: "Select roles"
10
+ },
11
+ parent: {
12
+ label: "Parent",
13
+ placeholder: "Select parent"
14
+ }
15
+ }
16
+ }
17
+ };
18
+
19
+ //# sourceMappingURL=default-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/users/default-data.ts"],"sourcesContent":["import { UsersModificationTranslations } from \"./types.js\";\n\nexport const usersDefaultTranslations: UsersModificationTranslations = {\n en: {\n fields: {\n isSuperAdmin: {\n label: \"Super Admin\",\n },\n roles: {\n label: \"Roles\",\n placeholder: \"Select roles\",\n },\n parent: {\n label: \"Parent\",\n placeholder: \"Select parent\",\n },\n },\n },\n};\n"],"names":["usersDefaultTranslations","en","fields","isSuperAdmin","label","roles","placeholder","parent"],"mappings":"AAEA,OAAO,MAAMA,2BAA0D;IACrEC,IAAI;QACFC,QAAQ;YACNC,cAAc;gBACZC,OAAO;YACT;YACAC,OAAO;gBACLD,OAAO;gBACPE,aAAa;YACf;YACAC,QAAQ;gBACNH,OAAO;gBACPE,aAAa;YACf;QACF;IACF;AACF,EAAE"}