mirror of
https://github.com/formbricks/formbricks.git
synced 2026-01-24 10:35:20 -06:00
31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
import { TAuthenticationApiKey } from "@formbricks/types/auth";
|
|
import { Result, err, ok } from "@formbricks/types/error-handlers";
|
|
import { ApiErrorResponseV2 } from "@/modules/api/v2/types/api-error";
|
|
import { getApiKeyWithPermissions } from "@/modules/organization/settings/api-keys/lib/api-key";
|
|
|
|
export const authenticateRequest = async (
|
|
request: Request
|
|
): Promise<Result<TAuthenticationApiKey, ApiErrorResponseV2>> => {
|
|
const apiKey = request.headers.get("x-api-key");
|
|
if (!apiKey) return err({ type: "unauthorized" });
|
|
|
|
const apiKeyData = await getApiKeyWithPermissions(apiKey);
|
|
|
|
if (!apiKeyData) return err({ type: "unauthorized" });
|
|
|
|
const authentication: TAuthenticationApiKey = {
|
|
type: "apiKey",
|
|
environmentPermissions: apiKeyData.apiKeyEnvironments.map((env) => ({
|
|
environmentId: env.environmentId,
|
|
environmentType: env.environment.type,
|
|
permission: env.permission,
|
|
projectId: env.environment.projectId,
|
|
projectName: env.environment.project.name,
|
|
})),
|
|
apiKeyId: apiKeyData.id,
|
|
organizationId: apiKeyData.organizationId,
|
|
organizationAccess: apiKeyData.organizationAccess,
|
|
};
|
|
return ok(authentication);
|
|
};
|