Spaces:
Build error
Build error
File size: 1,889 Bytes
fdaf912 b6915e6 fdaf912 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
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 });
}
|