@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 3.56 kB
Source Map (JSON)
{"version":3,"file":"client-authenticate.mjs","names":["verifyApiKey","clientIntegrationServices.verifyApiKey","clientIntegrationServices\n\t\t\t.updateLastUsed"],"sources":["../../../../src/libs/http/middleware/client-authenticate.ts"],"sourcesContent":["import { createMiddleware } from \"hono/factory\";\nimport { clientIntegrationServices } from \"../../../services/index.js\";\nimport type { LucidHonoContext } from \"../../../types/hono.js\";\nimport { decodeApiKey } from \"../../../utils/client-integrations/encode-api-key.js\";\nimport { LucidAPIError } from \"../../../utils/errors/index.js\";\nimport { multiTenancyEnabled } from \"../../../utils/helpers/index.js\";\nimport serviceWrapper from \"../../../utils/services/service-wrapper.js\";\nimport { copy } from \"../../i18n/index.js\";\nimport createServiceContext from \"../utils/create-service-context.js\";\n\nconst clientAuthentication = createMiddleware(\n\tasync (c: LucidHonoContext, next) => {\n\t\tconst apiKey = c.req.header(\"Authorization\");\n\t\tconst runtimeContext = c.get(\"runtimeContext\");\n\t\tconst connectionInfo = runtimeContext.getConnectionInfo(c);\n\t\tconst userAgent = c.req.header(\"user-agent\") || null;\n\n\t\tconst context = createServiceContext(c);\n\n\t\tif (!apiKey) {\n\t\t\tthrow new LucidAPIError({\n\t\t\t\ttype: \"authorisation\",\n\t\t\t\tmessage: copy(\"server:core.client.integrations.api.key.missing\"),\n\t\t\t\tstatus: 401,\n\t\t\t});\n\t\t}\n\n\t\tconst { key: decodedKey } = decodeApiKey(apiKey);\n\t\tif (!decodedKey) {\n\t\t\tthrow new LucidAPIError({\n\t\t\t\tmessage: copy(\"server:core.client.integrations.key.missing\"),\n\t\t\t});\n\t\t}\n\n\t\tconst verifyApiKey = await serviceWrapper(\n\t\t\tclientIntegrationServices.verifyApiKey,\n\t\t\t{\n\t\t\t\ttransaction: false,\n\t\t\t\tdefaultError: {\n\t\t\t\t\ttype: \"authorisation\",\n\t\t\t\t\tmessage: copy(\"server:core.client.integrations.error\"),\n\t\t\t\t\tstatus: 401,\n\t\t\t\t},\n\t\t\t},\n\t\t)(context, {\n\t\t\tapiKey: apiKey,\n\t\t});\n\t\tif (verifyApiKey.error) throw new LucidAPIError(verifyApiKey.error);\n\n\t\tconst tenantKey = multiTenancyEnabled(c.get(\"config\"))\n\t\t\t? verifyApiKey.data.tenantKey\n\t\t\t: null;\n\t\tc.set(\"clientIntegrationAuth\", verifyApiKey.data);\n\t\tc.set(\"tenant\", tenantKey ? { key: tenantKey } : null);\n\t\tconst response = await next();\n\n\t\tvoid clientIntegrationServices\n\t\t\t.updateLastUsed(context, {\n\t\t\t\tid: verifyApiKey.data.id,\n\t\t\t\tipAddress: connectionInfo.address ?? null,\n\t\t\t\tuserAgent: userAgent,\n\t\t\t})\n\t\t\t.catch(() => undefined);\n\n\t\treturn response;\n\t},\n);\n\nexport default clientAuthentication;\n"],"mappings":"kjBAUA,MAAM,EAAuB,EAC5B,MAAO,EAAqB,IAAS,CACpC,IAAM,EAAS,EAAE,IAAI,OAAO,eAAe,EAErC,EADiB,EAAE,IAAI,gBACO,CAAC,CAAC,kBAAkB,CAAC,EACnD,EAAY,EAAE,IAAI,OAAO,YAAY,GAAK,KAE1C,EAAU,EAAqB,CAAC,EAEtC,GAAI,CAAC,EACJ,MAAM,IAAI,EAAc,CACvB,KAAM,gBACN,QAAS,EAAK,iDAAiD,EAC/D,OAAQ,GACT,CAAC,EAGF,GAAM,CAAE,IAAK,GAAe,EAAa,CAAM,EAC/C,GAAI,CAAC,EACJ,MAAM,IAAI,EAAc,CACvB,QAAS,EAAK,6CAA6C,CAC5D,CAAC,EAGF,IAAMA,EAAe,MAAM,EAC1BC,EACA,CACC,YAAa,GACb,aAAc,CACb,KAAM,gBACN,QAAS,EAAK,uCAAuC,EACrD,OAAQ,GACT,CACD,CACD,CAAC,CAAC,EAAS,CACF,QACT,CAAC,EACD,GAAID,EAAa,MAAO,MAAM,IAAI,EAAcA,EAAa,KAAK,EAElE,IAAM,EAAY,EAAoB,EAAE,IAAI,QAAQ,CAAC,EAClDA,EAAa,KAAK,UAClB,KACH,EAAE,IAAI,wBAAyBA,EAAa,IAAI,EAChD,EAAE,IAAI,SAAU,EAAY,CAAE,IAAK,CAAU,EAAI,IAAI,EACrD,IAAM,EAAW,MAAM,EAAK,EAU5B,OARA,EACiB,EAAS,CACxB,GAAIA,EAAa,KAAK,GACtB,UAAW,EAAe,SAAW,KAC1B,WACZ,CAAC,CAAC,CACD,UAAY,IAAA,EAAS,EAEhB,CACR,CACD"}