fix: resolve infinite recursion in admin_users RLS policy
The admin_users policy was checking if user is admin by querying the same table, causing infinite recursion. Changed to allow users to view their own admin record directly using auth.uid() = user_id. This fixes the error: 'infinite recursion detected in policy for relation admin_users'
This commit is contained in:
@@ -189,6 +189,7 @@ export async function getGlobalApiStats(): Promise<ApiStats | null> {
|
||||
*/
|
||||
export async function checkIsAdmin(userId: string): Promise<boolean> {
|
||||
try {
|
||||
console.log('[checkIsAdmin] Checking admin status for user:', userId);
|
||||
const supabase = createServerComponentClient({ cookies });
|
||||
|
||||
const { data, error } = await supabase
|
||||
@@ -197,13 +198,18 @@ export async function checkIsAdmin(userId: string): Promise<boolean> {
|
||||
.eq('user_id', userId)
|
||||
.single();
|
||||
|
||||
console.log('[checkIsAdmin] Query result - data:', data, 'error:', error);
|
||||
|
||||
if (error) {
|
||||
console.log('[checkIsAdmin] Error occurred:', error.message);
|
||||
return false;
|
||||
}
|
||||
|
||||
return !!data;
|
||||
const isAdmin = !!data;
|
||||
console.log('[checkIsAdmin] Final result:', isAdmin);
|
||||
return isAdmin;
|
||||
} catch (err) {
|
||||
console.error('Error checking admin status:', err);
|
||||
console.error('[checkIsAdmin] Exception:', err);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user