khronoz's picture
V.0.3.1.5 πŸ› Bugfix (#34)
b6915e6 unverified
import { createClient } from '@supabase/supabase-js';
import { NextRequest, NextResponse } from "next/server";
// GET request to retrieve the users data from the database
export async function GET(request: NextRequest) {
// Retrieve the session token from the request cookies
const session = request.cookies.get('next-auth.session-token') || request.cookies.get('__Secure-next-auth.session-token');
// Create a new Supabase client
const supabaseAuth = createClient(
process.env.SUPABASE_URL ?? '',
process.env.SUPABASE_SERVICE_ROLE_KEY ?? '',
{ db: { schema: 'next_auth' } },
);
const supabase = createClient(
process.env.SUPABASE_URL ?? '',
process.env.SUPABASE_SERVICE_ROLE_KEY ?? '',
{ db: { schema: 'public' } },
);
// Retrieve the user's ID from the session token
const { data: sessionData, error: sessionError } = await supabaseAuth
.from('sessions')
.select('userId')
.eq('sessionToken', session?.value)
.single();
const userId = sessionData?.userId;
if (sessionError) {
console.error('Error fetching session from database:', sessionError.message);
return NextResponse.json({ error: sessionError.message }, { status: 500 });
}
// Ensure user is an admin
const { data: userData, error: userError } = await supabase
.from('users')
.select(`
id,
admins (
id
)
`)
.eq('id', userId)
.single();
if (userError) {
console.error('Error fetching user data from database:', userError.message);
return NextResponse.json({ error: userError.message }, { status: 500 });
}
// console.log('userData:', userData);
const isAdmin = userData?.admins.length > 0;
return NextResponse.json({ isAdmin: isAdmin });
}