mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 14:11:13 -05:00
Fix: Correct database function type mismatch
This commit is contained in:
@@ -0,0 +1,43 @@
|
|||||||
|
-- Fix type mismatch in get_users_with_emails function
|
||||||
|
CREATE OR REPLACE FUNCTION public.get_users_with_emails()
|
||||||
|
RETURNS TABLE (
|
||||||
|
id uuid,
|
||||||
|
user_id uuid,
|
||||||
|
username text,
|
||||||
|
email text,
|
||||||
|
display_name text,
|
||||||
|
avatar_url text,
|
||||||
|
banned boolean,
|
||||||
|
created_at timestamptz
|
||||||
|
)
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
SECURITY DEFINER
|
||||||
|
SET search_path TO 'public', 'auth'
|
||||||
|
AS $$
|
||||||
|
BEGIN
|
||||||
|
-- Check if caller is superuser or admin
|
||||||
|
IF NOT EXISTS (
|
||||||
|
SELECT 1 FROM public.user_roles
|
||||||
|
WHERE user_roles.user_id = auth.uid()
|
||||||
|
AND role IN ('superuser', 'admin')
|
||||||
|
) THEN
|
||||||
|
RAISE EXCEPTION 'Access denied: requires admin or superuser role'
|
||||||
|
USING ERRCODE = '42501';
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
-- Return profiles with emails from auth.users
|
||||||
|
RETURN QUERY
|
||||||
|
SELECT
|
||||||
|
p.id,
|
||||||
|
p.user_id,
|
||||||
|
p.username,
|
||||||
|
COALESCE(au.email, 'unknown@email.com')::text as email,
|
||||||
|
p.display_name,
|
||||||
|
p.avatar_url,
|
||||||
|
p.banned,
|
||||||
|
p.created_at
|
||||||
|
FROM public.profiles p
|
||||||
|
LEFT JOIN auth.users au ON au.id = p.user_id
|
||||||
|
ORDER BY p.created_at DESC;
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
Reference in New Issue
Block a user