This repository has been archived on 2026-06-07. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
master-ai/vibn-frontend/app/api/auth/me/route.ts

47 lines
1.5 KiB
TypeScript

/**
* GET /api/auth/me
*
* Exposes a profile endpoint for the VibnCode desktop app.
* Resolves the Bearer vibn_sk_... Workspace API key, queries the database,
* and returns the corresponding owner's user details.
*/
import { NextResponse } from "next/server";
import { requireWorkspacePrincipal } from "@/lib/auth/workspace-auth";
import { queryOne } from "@/lib/db-postgres";
export async function GET(request: Request) {
// 1. Authenticate the Workspace API key or Browser Session
const principal = await requireWorkspacePrincipal(request);
if (principal instanceof NextResponse) return principal;
try {
// 2. Query user details from fs_users
const user = await queryOne<{
id: string;
data: any;
}>(
`SELECT id, data FROM fs_users WHERE id = $1 LIMIT 1`,
[principal.userId]
);
if (!user) {
return NextResponse.json({ error: "User not found" }, { status: 404 });
}
// 3. Return user profile compatible with the desktop client's User expectations
return NextResponse.json({
user: {
id: user.id,
name: user.data?.name || user.data?.display_name || "Vibn Owner",
email: user.data?.email || "",
photoUrl: user.data?.image || user.data?.photo_url || null,
workspace: principal.workspace.slug,
}
});
} catch (err) {
console.error("[api/auth/me GET]", err);
return NextResponse.json({ error: "Failed to resolve profile" }, { status: 500 });
}
}