studiocms
Version:
Astro Native CMS for AstroDB. Built from the ground up by the Astro community.
30 lines (29 loc) • 1.06 kB
JavaScript
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
};