UNPKG

studiocms

Version:

Astro Native CMS for AstroDB. Built from the ground up by the Astro community.

30 lines (29 loc) 1.06 kB
import { apiResponseLogger } from "studiocms:logger"; import { SDKCore } from "studiocms:sdk"; import { Effect, genLogger } from "../../../../../effect.js"; const getAuthTokenFromHeader = (context) => genLogger("routes/rest/utils/auth-token/getAuthTokenFromHeader")(function* () { const authTokenData = yield* Effect.try(() => context.request.headers.get("Authorization")); if (!authTokenData) { return null; } const parts = authTokenData.split(" "); if (parts.length !== 2 || parts[0].toLowerCase() !== "bearer") { return null; } return parts[1]; }); const verifyAuthTokenFromHeader = (context) => genLogger("routes/rest/utils/auth-token/verifyAuthTokenFromHeader")(function* () { const sdk = yield* SDKCore; const authToken = yield* getAuthTokenFromHeader(context); if (!authToken) { return apiResponseLogger(401, "Unauthorized"); } const user = yield* sdk.REST_API.tokens.verify(authToken); if (!user) { return apiResponseLogger(401, "Unauthorized"); } return user; }); export { verifyAuthTokenFromHeader };