feat(auth): enable requireWorkspacePrincipal on projects GET route to support desktop API keys

This commit is contained in:
2026-05-29 17:06:23 -07:00
parent 573ad989ca
commit b263f6d392

View File

@@ -1,15 +1,22 @@
import { NextResponse } from 'next/server'; import { NextResponse } from 'next/server';
import { authSession } from "@/lib/auth/session-server"; import { requireWorkspacePrincipal } from "@/lib/auth/workspace-auth";
import { query } from '@/lib/db-postgres'; import { query, queryOne } from '@/lib/db-postgres';
export async function GET() { export async function GET(request: Request) {
try { try {
const session = await authSession(); // 1. Authenticate the Workspace API key or Browser Session
if (!session?.user?.email) { const principal = await requireWorkspacePrincipal(request);
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); if (principal instanceof NextResponse) return principal;
}
const email = session.user.email; // 2. Fetch user email from principal.userId
const userRow = await queryOne<{ data: any }>(
`SELECT data FROM fs_users WHERE id = $1 LIMIT 1`,
[principal.userId]
);
const email = userRow?.data?.email;
if (!email) {
return NextResponse.json({ error: 'User email not found' }, { status: 404 });
}
// Fetch projects joined on user email // Fetch projects joined on user email
const projects = await query<any>(` const projects = await query<any>(`