UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

1 lines 3.58 kB
{"version":3,"file":"scopes.mjs","names":[],"sources":["../../../src/libs/permission/scopes.ts"],"sourcesContent":["import type { Config } from \"../../types/config.js\";\nimport { tenantAccessAllowed } from \"../../utils/helpers/index.js\";\nimport { copy } from \"../i18n/index.js\";\nimport type { ResolvedAdminCopy } from \"../i18n/types.js\";\nimport {\n\ttype ClientScope,\n\tClientScopes,\n\tgetCollectionClientScope,\n} from \"./client-scopes.js\";\n\nexport type ClientScopeDefinition = {\n\tkey: ClientScope;\n\tdetails: {\n\t\tname: ResolvedAdminCopy;\n\t\tdescription?: ResolvedAdminCopy | null;\n\t};\n};\n\nexport type ClientScopeGroup = {\n\tkey: string;\n\tdetails: {\n\t\tname: ResolvedAdminCopy;\n\t\tdescription?: ResolvedAdminCopy | null;\n\t};\n\tscopes: ClientScopeDefinition[];\n};\n\nconst staticClientScopeGroups: ClientScopeGroup[] = [\n\t{\n\t\tkey: \"media\",\n\t\tdetails: {\n\t\t\tname: copy(\"admin:client.scopes.media.label\"),\n\t\t},\n\t\tscopes: [\n\t\t\t{\n\t\t\t\tkey: ClientScopes.MediaRead,\n\t\t\t\tdetails: {\n\t\t\t\t\tname: copy(\"admin:client.scopes.media.read\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: ClientScopes.MediaProcess,\n\t\t\t\tdetails: {\n\t\t\t\t\tname: copy(\"admin:client.scopes.media.process\"),\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tkey: \"locales\",\n\t\tdetails: {\n\t\t\tname: copy(\"admin:client.scopes.locales.label\"),\n\t\t},\n\t\tscopes: [\n\t\t\t{\n\t\t\t\tkey: ClientScopes.LocalesRead,\n\t\t\t\tdetails: {\n\t\t\t\t\tname: copy(\"admin:client.scopes.locales.read\"),\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n];\n\n/** Builds the static and collection-generated client scope catalogue. */\nexport const getClientScopeGroups = (\n\tconfig: Pick<Config, \"collections\">,\n\toptions?: { tenantKey?: string | null },\n): ClientScopeGroup[] => {\n\tconst collectionGroups = config.collections\n\t\t.filter(\n\t\t\t(collection) =>\n\t\t\t\toptions?.tenantKey === undefined ||\n\t\t\t\ttenantAccessAllowed(collection.getData.tenants, options.tenantKey),\n\t\t)\n\t\t.map(\n\t\t\t(collection): ClientScopeGroup => ({\n\t\t\t\tkey: `documents:${collection.key}`,\n\t\t\t\tdetails: {\n\t\t\t\t\tname: collection.getData.details.name,\n\t\t\t\t},\n\t\t\t\tscopes: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: getCollectionClientScope(collection.key),\n\t\t\t\t\t\tdetails: {\n\t\t\t\t\t\t\tname: copy(\"admin:client.scopes.documents.read\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}),\n\t\t);\n\n\treturn [...collectionGroups, ...staticClientScopeGroups];\n};\n\nexport const getValidClientScopes = (\n\tconfig: Pick<Config, \"collections\">,\n\toptions?: { tenantKey?: string | null },\n): ClientScope[] =>\n\tgetClientScopeGroups(config, options).flatMap((group) =>\n\t\tgroup.scopes.map((scope) => scope.key),\n\t);\n"],"mappings":"+LA2BA,MAAM,EAA8C,CACnD,CACC,IAAK,QACL,QAAS,CACR,KAAM,EAAK,iCAAiC,CAC7C,EACA,OAAQ,CACP,CACC,IAAK,EAAa,UAClB,QAAS,CACR,KAAM,EAAK,gCAAgC,CAC5C,CACD,EACA,CACC,IAAK,EAAa,aAClB,QAAS,CACR,KAAM,EAAK,mCAAmC,CAC/C,CACD,CACD,CACD,EACA,CACC,IAAK,UACL,QAAS,CACR,KAAM,EAAK,mCAAmC,CAC/C,EACA,OAAQ,CACP,CACC,IAAK,EAAa,YAClB,QAAS,CACR,KAAM,EAAK,kCAAkC,CAC9C,CACD,CACD,CACD,CACD,EAGa,GACZ,EACA,IAyBO,CAAC,GAvBiB,EAAO,YAC9B,OACC,GACA,GAAS,YAAc,IAAA,IACvB,EAAoB,EAAW,QAAQ,QAAS,EAAQ,SAAS,CACnE,CAAC,CACA,IACC,IAAkC,CAClC,IAAK,aAAa,EAAW,MAC7B,QAAS,CACR,KAAM,EAAW,QAAQ,QAAQ,IAClC,EACA,OAAQ,CACP,CACC,IAAK,EAAyB,EAAW,GAAG,EAC5C,QAAS,CACR,KAAM,EAAK,oCAAoC,CAChD,CACD,CACD,CACD,EAGwB,EAAG,GAAG,CAAuB,EAG3C,GACZ,EACA,IAEA,EAAqB,EAAQ,CAAO,CAAC,CAAC,QAAS,GAC9C,EAAM,OAAO,IAAK,GAAU,EAAM,GAAG,CACtC"}