@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 1.59 kB
Source Map (JSON)
{"version":3,"file":"permissions.mjs","names":[],"sources":["../../../../src/libs/http/middleware/permissions.ts"],"sourcesContent":["import { createMiddleware } from \"hono/factory\";\nimport type { LucidHonoContext } from \"../../../types/hono.js\";\nimport { LucidAPIError } from \"../../../utils/errors/index.js\";\nimport { copy } from \"../../i18n/index.js\";\nimport hasAccess from \"../../permission/has-access.js\";\nimport type { Permission } from \"../../permission/types.js\";\n\nexport const permissionCheck = (\n\tc: LucidHonoContext,\n\tpermissions: Permission | Permission[],\n) => {\n\tconst requirements = Array.isArray(permissions) ? permissions : [permissions];\n\tconst access = hasAccess({\n\t\tuser: c.get(\"auth\"),\n\t\trequiredPermissions: requirements,\n\t});\n\n\tif (!access) {\n\t\tthrow new LucidAPIError({\n\t\t\ttype: \"basic\",\n\t\t\tname: copy(\"server:core.permissions.error.name\"),\n\t\t\tmessage: copy(\"server:core.permissions.denied\"),\n\t\t\tstatus: 403,\n\t\t});\n\t}\n};\n\nconst permissions = (permissions: Permission | Permission[]) =>\n\tcreateMiddleware(async (c: LucidHonoContext, next) => {\n\t\tpermissionCheck(c, permissions);\n\t\treturn await next();\n\t});\n\nexport default permissions;\n"],"mappings":"mMAOA,MAAa,GACZ,EACA,IACI,CACJ,IAAM,EAAe,MAAM,QAAQ,CAAW,EAAI,EAAc,CAAC,CAAW,EAM5E,GAAI,CALW,EAAU,CACxB,KAAM,EAAE,IAAI,MAAM,EAClB,oBAAqB,CACtB,CAEU,EACT,MAAM,IAAI,EAAc,CACvB,KAAM,QACN,KAAM,EAAK,oCAAoC,EAC/C,QAAS,EAAK,gCAAgC,EAC9C,OAAQ,GACT,CAAC,CAEH,EAEM,EAAe,GACpB,EAAiB,MAAO,EAAqB,KAC5C,EAAgB,EAAG,CAAW,EACvB,MAAM,EAAK,EAClB"}