fix: create fs_user on sign-in, fix projects fetch

Made-with: Cursor
This commit is contained in:
2026-02-27 12:39:25 -08:00
parent 17056ea00c
commit d8ead667d0

View File

@@ -2,6 +2,7 @@ import { NextAuthOptions } from "next-auth";
import GoogleProvider from "next-auth/providers/google"; import GoogleProvider from "next-auth/providers/google";
import { PrismaAdapter } from "@next-auth/prisma-adapter"; import { PrismaAdapter } from "@next-auth/prisma-adapter";
import { PrismaClient } from "@prisma/client"; import { PrismaClient } from "@prisma/client";
import { query } from "@/lib/db-postgres";
const prisma = new PrismaClient(); const prisma = new PrismaClient();
@@ -24,6 +25,23 @@ export const authOptions: NextAuthOptions = {
} }
return session; return session;
}, },
async signIn({ user }) {
if (!user?.email) return true;
try {
const workspace = user.email.split("@")[0].toLowerCase().replace(/[^a-z0-9]+/g, "-") + "-account";
await query(`
INSERT INTO fs_users (id, user_id, data)
VALUES (gen_random_uuid()::text, $1, $2::jsonb)
ON CONFLICT ((data->>'email')) DO UPDATE
SET user_id = EXCLUDED.user_id,
data = fs_users.data || EXCLUDED.data,
updated_at = NOW()
`, [user.id, JSON.stringify({ email: user.email, name: user.name, image: user.image, workspace })]);
} catch (e) {
console.error("[signIn] Failed to upsert fs_user:", e);
}
return true;
},
}, },
session: { session: {
strategy: "database", strategy: "database",