66 lines
1.9 KiB
PL/PgSQL
66 lines
1.9 KiB
PL/PgSQL
-- Seed Admin User
|
|
-- Creates the initial admin user with specified credentials
|
|
|
|
-- Function to create admin user
|
|
CREATE OR REPLACE FUNCTION public.create_admin_user()
|
|
RETURNS VOID AS $$
|
|
DECLARE
|
|
admin_user_id UUID;
|
|
admin_role_id UUID;
|
|
BEGIN
|
|
-- Get admin role ID
|
|
SELECT id INTO admin_role_id FROM public.roles WHERE name = 'admin';
|
|
|
|
-- Check if admin user already exists
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM auth.users WHERE email = 's.alireza.v@gmail.com'
|
|
) THEN
|
|
-- Insert user into auth.users (this simulates user registration)
|
|
-- Note: In production, this would be done through Supabase Auth API
|
|
INSERT INTO auth.users (
|
|
instance_id,
|
|
id,
|
|
aud,
|
|
role,
|
|
email,
|
|
encrypted_password,
|
|
email_confirmed_at,
|
|
created_at,
|
|
updated_at,
|
|
confirmation_token,
|
|
email_change,
|
|
email_change_token_new,
|
|
recovery_token
|
|
) VALUES (
|
|
'00000000-0000-0000-0000-000000000000',
|
|
uuid_generate_v4(),
|
|
'authenticated',
|
|
'authenticated',
|
|
's.alireza.v@gmail.com',
|
|
crypt('2517392', gen_salt('bf')), -- Hash the password
|
|
NOW(),
|
|
NOW(),
|
|
NOW(),
|
|
'',
|
|
'',
|
|
'',
|
|
''
|
|
) RETURNING id INTO admin_user_id;
|
|
|
|
-- Insert user profile
|
|
INSERT INTO public.user_profiles (id, email, role_id)
|
|
VALUES (admin_user_id, 's.alireza.v@gmail.com', admin_role_id);
|
|
|
|
RAISE NOTICE 'Admin user created successfully with email: s.alireza.v@gmail.com';
|
|
ELSE
|
|
RAISE NOTICE 'Admin user already exists';
|
|
END IF;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
-- Execute the function to create admin user
|
|
SELECT public.create_admin_user();
|
|
|
|
-- Drop the function as it's no longer needed
|
|
DROP FUNCTION public.create_admin_user();
|