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.45 kB
{"version":3,"file":"status.mjs","names":["constants","authServices.getStatus"],"sources":["../../../../src/libs/toolkit/auth/status.ts"],"sourcesContent":["import constants from \"../../../constants/constants.js\";\nimport { authServices } from \"../../../services/index.js\";\nimport type {\n\tServiceContext,\n\tServiceResponse,\n} from \"../../../utils/services/types.js\";\nimport { runToolkitService } from \"../utils.js\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type ToolkitAuthCookieStore = {\n\t/** Reads a Lucid session cookie from the frontend framework's current request. */\n\tget: (name: string) => MaybePromise<string | null | undefined>;\n};\n\nexport type ToolkitAuthResponseHeaders = {\n\t/** Sets a response header on the frontend framework's current response. */\n\tset: (name: string, value: string) => MaybePromise<void>;\n};\n\nexport type ToolkitAuthStatusInput = {\n\t/** Framework adapter for reading Lucid's browser session cookies. */\n\tcookies: ToolkitAuthCookieStore;\n\t/** Optional framework adapter used to prevent caching personalized HTML. */\n\theaders?: ToolkitAuthResponseHeaders;\n};\n\nexport type ToolkitAuthStatus = {\n\tauthenticated: boolean;\n};\n\nconst setAuthResponseHeaders = async (headers?: ToolkitAuthResponseHeaders) => {\n\tif (!headers) return;\n\n\tawait Promise.all([\n\t\theaders.set(\"Cache-Control\", \"private, no-store\"),\n\t\theaders.set(\"Pragma\", \"no-cache\"),\n\t]);\n};\n\nconst status = async (\n\tcontext: ServiceContext,\n\tinput: ToolkitAuthStatusInput,\n): ServiceResponse<ToolkitAuthStatus> => {\n\treturn runToolkitService<ToolkitAuthStatus>(\n\t\tasync () => {\n\t\t\tawait setAuthResponseHeaders(input.headers);\n\t\t\tconst [accessToken, refreshToken] = await Promise.all([\n\t\t\t\tinput.cookies.get(constants.cookies.accessToken),\n\t\t\t\tinput.cookies.get(constants.cookies.refreshToken),\n\t\t\t]);\n\t\t\tconst statusRes = await authServices.getStatus(context, {\n\t\t\t\taccessToken: accessToken ?? undefined,\n\t\t\t\trefreshToken: refreshToken ?? undefined,\n\t\t\t});\n\n\t\t\tif (statusRes.error) {\n\t\t\t\tif (statusRes.error.type === \"authorisation\") {\n\t\t\t\t\treturn {\n\t\t\t\t\t\terror: undefined,\n\t\t\t\t\t\tdata: { authenticated: false },\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn statusRes;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\terror: undefined,\n\t\t\t\tdata: { authenticated: true },\n\t\t\t};\n\t\t},\n\t\t{\n\t\t\tname: {\n\t\t\t\tkey: \"core.toolkit.auth.status.error.name\",\n\t\t\t\tdefaultMessage: \"Authentication Toolkit Error\",\n\t\t\t},\n\t\t\tmessage: {\n\t\t\t\tkey: \"core.toolkit.auth.status.error.message\",\n\t\t\t\tdefaultMessage:\n\t\t\t\t\t\"Lucid toolkit could not resolve authentication status.\",\n\t\t\t},\n\t\t},\n\t);\n};\n\nexport default status;\n"],"mappings":"sJA+BA,MAAM,EAAyB,KAAO,IAAyC,CACzE,GAEL,MAAM,QAAQ,IAAI,CACjB,EAAQ,IAAI,gBAAiB,mBAAmB,EAChD,EAAQ,IAAI,SAAU,UAAU,CACjC,CAAC,CACF,EAEM,EAAS,MACd,EACA,IAEO,EACN,SAAY,CACX,MAAM,EAAuB,EAAM,OAAO,EAC1C,GAAM,CAAC,EAAa,GAAgB,MAAM,QAAQ,IAAI,CACrD,EAAM,QAAQ,IAAIA,EAAU,QAAQ,WAAW,EAC/C,EAAM,QAAQ,IAAIA,EAAU,QAAQ,YAAY,CACjD,CAAC,EACK,EAAY,MAAMC,EAAuB,EAAS,CACvD,YAAa,GAAe,IAAA,GAC5B,aAAc,GAAgB,IAAA,EAC/B,CAAC,EAYD,OAVI,EAAU,MACT,EAAU,MAAM,OAAS,gBACrB,CACN,MAAO,IAAA,GACP,KAAM,CAAE,cAAe,EAAM,CAC9B,EAEM,EAGD,CACN,MAAO,IAAA,GACP,KAAM,CAAE,cAAe,EAAK,CAC7B,CACD,EACA,CACC,KAAM,CACL,IAAK,sCACL,eAAgB,8BACjB,EACA,QAAS,CACR,IAAK,yCACL,eACC,wDACF,CACD,CACD"}