39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { NextResponse } from "next/server";
|
|
import { db } from "@/lib/prisma";
|
|
import { UserRole } from "@prisma/client";
|
|
import { supabaseServer } from "@/lib/supabase/server";
|
|
|
|
export async function GET() {
|
|
try {
|
|
const supabase = await supabaseServer();
|
|
if (!supabase) {
|
|
return NextResponse.json({ user: null, isTeacher: false });
|
|
}
|
|
|
|
const {
|
|
data: { user },
|
|
} = await supabase.auth.getUser();
|
|
|
|
if (!user) {
|
|
return NextResponse.json({ user: null, isTeacher: false });
|
|
}
|
|
|
|
const profile = await db.profile.findUnique({
|
|
where: { id: user.id },
|
|
select: { role: true },
|
|
}).catch(() => null);
|
|
|
|
const isTeacher =
|
|
!!profile &&
|
|
(profile.role === UserRole.TEACHER || profile.role === UserRole.SUPER_ADMIN);
|
|
|
|
return NextResponse.json({
|
|
user: { id: user.id, email: user.email ?? null },
|
|
isTeacher,
|
|
});
|
|
} catch (error) {
|
|
console.error("Failed to resolve auth session route. Returning anonymous fallback.", error);
|
|
return NextResponse.json({ user: null, isTeacher: false });
|
|
}
|
|
}
|