@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.
- package/LICENSE +21 -0
- package/README.md +175 -0
- package/dist/collections/permission-actions/default-data.js +35 -0
- package/dist/collections/permission-actions/default-data.js.map +1 -0
- package/dist/collections/permission-actions/index.js +96 -0
- package/dist/collections/permission-actions/index.js.map +1 -0
- package/dist/collections/permission-actions/types.js +3 -0
- package/dist/collections/permission-actions/types.js.map +1 -0
- package/dist/collections/permission-features/default-data.js +29 -0
- package/dist/collections/permission-features/default-data.js.map +1 -0
- package/dist/collections/permission-features/index.js +82 -0
- package/dist/collections/permission-features/index.js.map +1 -0
- package/dist/collections/permission-features/types.js +3 -0
- package/dist/collections/permission-features/types.js.map +1 -0
- package/dist/collections/permissions/default-data.js +37 -0
- package/dist/collections/permissions/default-data.js.map +1 -0
- package/dist/collections/permissions/index.js +102 -0
- package/dist/collections/permissions/index.js.map +1 -0
- package/dist/collections/permissions/types.js +3 -0
- package/dist/collections/permissions/types.js.map +1 -0
- package/dist/collections/roles/default-data.js +44 -0
- package/dist/collections/roles/default-data.js.map +1 -0
- package/dist/collections/roles/hooks/sync-permission-matrix-draft.js +66 -0
- package/dist/collections/roles/hooks/sync-permission-matrix-draft.js.map +1 -0
- package/dist/collections/roles/index.js +122 -0
- package/dist/collections/roles/index.js.map +1 -0
- package/dist/collections/roles/types.js +3 -0
- package/dist/collections/roles/types.js.map +1 -0
- package/dist/collections/roles-permissions/default-data.js +27 -0
- package/dist/collections/roles-permissions/default-data.js.map +1 -0
- package/dist/collections/roles-permissions/index.js +75 -0
- package/dist/collections/roles-permissions/index.js.map +1 -0
- package/dist/collections/roles-permissions/types.js +3 -0
- package/dist/collections/roles-permissions/types.js.map +1 -0
- package/dist/collections/users/default-data.js +19 -0
- package/dist/collections/users/default-data.js.map +1 -0
- package/dist/collections/users/index.js +135 -0
- package/dist/collections/users/index.js.map +1 -0
- package/dist/collections/users/parent-path.js +210 -0
- package/dist/collections/users/parent-path.js.map +1 -0
- package/dist/collections/users/types.js +3 -0
- package/dist/collections/users/types.js.map +1 -0
- package/dist/components/role-permission-matrix-client/default-data.js +23 -0
- package/dist/components/role-permission-matrix-client/default-data.js.map +1 -0
- package/dist/components/role-permission-matrix-client/index.js +299 -0
- package/dist/components/role-permission-matrix-client/index.js.map +1 -0
- package/dist/components/role-permission-matrix-client/types.js +3 -0
- package/dist/components/role-permission-matrix-client/types.js.map +1 -0
- package/dist/endpoints/customEndpointHandler.js +7 -0
- package/dist/endpoints/customEndpointHandler.js.map +1 -0
- package/dist/exports/client.js +3 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/rsc.js +2 -0
- package/dist/exports/rsc.js.map +1 -0
- package/dist/general-types.d.js +2 -0
- package/dist/general-types.d.js.map +1 -0
- package/dist/index.js +184 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/constants/general.js +3 -0
- package/dist/lib/constants/general.js.map +1 -0
- package/dist/lib/constants/index.js +16 -0
- package/dist/lib/constants/index.js.map +1 -0
- package/dist/lib/constants/permission-action.js +10 -0
- package/dist/lib/constants/permission-action.js.map +1 -0
- package/dist/lib/constants/permission-feature.js +6 -0
- package/dist/lib/constants/permission-feature.js.map +1 -0
- package/dist/lib/constants/permission.js +6 -0
- package/dist/lib/constants/permission.js.map +1 -0
- package/dist/lib/constants/role.js +11 -0
- package/dist/lib/constants/role.js.map +1 -0
- package/dist/lib/constants/user.js +3 -0
- package/dist/lib/constants/user.js.map +1 -0
- package/dist/lib/utils/access.js +452 -0
- package/dist/lib/utils/access.js.map +1 -0
- package/dist/lib/utils/data.js +7 -0
- package/dist/lib/utils/data.js.map +1 -0
- package/dist/lib/utils/fields.js +41 -0
- package/dist/lib/utils/fields.js.map +1 -0
- package/dist/lib/utils/index.js +6 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/lib/utils/localization.js +52 -0
- package/dist/lib/utils/localization.js.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|