Inicio do Projeto Piloto
ci / verify (push) Has been cancelled

This commit is contained in:
camilafagundes committed 2026-10-02 23:59:36 -03:00
1 parent 6e23f1533b
commit 419325db12
52 files changed
+1329 -110

No files matched your search

+16 -15
View File
@@ -1,21 +1,24 @@
import "server-only";
import { cookies } from "next/headers";
import { createServerClient } from "@supabase/ssr";
import type { RequestContext, Role } from "@/domain/spreadsheet-adapter/types";
import { adapterPermissions } from "@/domain/spreadsheet-adapter/permissions";
import type { AuthenticatedContext, Role } from "@/domain/spreadsheet-adapter/types";
import { getDb } from "@/infra/db/client";
import { devAuthEnabled, verifyDevSession } from "./dev-session";
export type AuthState =
| { kind: "anonymous" }
| { kind: "session_expired" }
| { kind: "no_workspace" }
| { kind: "not_member" }
| { kind: "ok"; ctx: RequestContext };
| { kind: "ok"; ctx: AuthenticatedContext };
export async function resolveAuth(): Promise<AuthState> {
const jar = await cookies();
let userId: string | null = null;
let workspaceId = jar.get("elo_pro_workspace_id")?.value ?? null;
const devToken = jar.get("adapter_dev_session")?.value;
const hadAuthCookie = jar.getAll().some((cookie) => cookie.name.startsWith("sb-") && cookie.name.includes("auth"));
if (devToken && devAuthEnabled()) {
const dev = verifyDevSession(devToken);
if (dev) {
@@ -37,7 +40,7 @@ export async function resolveAuth(): Promise<AuthState> {
const { data } = await supabase.auth.getUser();
userId = data.user?.id ?? null;
}
if (!userId) return { kind: "anonymous" };
if (!userId) return { kind: hadAuthCookie || Boolean(devToken) ? "session_expired" : "anonymous" };
if (!workspaceId) return { kind: "no_workspace" };
const db = await getDb();
const rows = await db.withUser(userId, (query) =>
@@ -63,17 +66,15 @@ export async function resolveAuth(): Promise<AuthState> {
);
const row = rows[0];
if (!row) return { kind: "not_member" };
return {
kind: "ok",
ctx: {
userId,
displayName: row.display_name,
isSuperadmin: row.is_superadmin,
workspaceId,
workspaceName: row.workspace_name,
role: row.role,
moduleEnabled: row.module_enabled,
allowNonAdminModelUpload: row.allow_upload,
},
const ctx = {
userId,
displayName: row.display_name,
isSuperadmin: row.is_superadmin,
workspaceId,
workspaceName: row.workspace_name,
role: row.role,
moduleEnabled: row.module_enabled,
allowNonAdminModelUpload: row.allow_upload,
};
return { kind: "ok", ctx: { ...ctx, permissions: adapterPermissions(ctx) } };
}