64 lines
2.7 KiB
PL/PgSQL
64 lines
2.7 KiB
PL/PgSQL
-- Remove profiles table (not needed for single admin user)
|
|
DROP TABLE IF EXISTS public.profiles CASCADE;
|
|
|
|
-- Remove the trigger and function for auto-creating profiles
|
|
DROP TRIGGER IF EXISTS on_auth_user_created ON auth.users;
|
|
DROP FUNCTION IF EXISTS public.handle_new_user() CASCADE;
|
|
|
|
-- Update global_settings to not require user_id (single admin)
|
|
ALTER TABLE public.global_settings DROP CONSTRAINT IF EXISTS global_settings_user_id_fkey;
|
|
ALTER TABLE public.global_settings ALTER COLUMN user_id DROP NOT NULL;
|
|
|
|
-- Update container_settings to not require user_id
|
|
ALTER TABLE public.container_settings DROP CONSTRAINT IF EXISTS container_settings_user_id_fkey;
|
|
ALTER TABLE public.container_settings ALTER COLUMN user_id DROP NOT NULL;
|
|
|
|
-- Update audit_logs to not require user_id
|
|
ALTER TABLE public.audit_logs DROP CONSTRAINT IF EXISTS audit_logs_user_id_fkey;
|
|
ALTER TABLE public.audit_logs ALTER COLUMN user_id DROP NOT NULL;
|
|
|
|
-- Update RLS policies for single admin
|
|
DROP POLICY IF EXISTS "Users can view their own settings" ON public.global_settings;
|
|
DROP POLICY IF EXISTS "Users can insert their own settings" ON public.global_settings;
|
|
DROP POLICY IF EXISTS "Users can update their own settings" ON public.global_settings;
|
|
|
|
CREATE POLICY "Admin can manage global settings"
|
|
ON public.global_settings FOR ALL
|
|
USING (true)
|
|
WITH CHECK (true);
|
|
|
|
DROP POLICY IF EXISTS "Users can view their own container settings" ON public.container_settings;
|
|
DROP POLICY IF EXISTS "Users can insert their own container settings" ON public.container_settings;
|
|
DROP POLICY IF EXISTS "Users can update their own container settings" ON public.container_settings;
|
|
DROP POLICY IF EXISTS "Users can delete their own container settings" ON public.container_settings;
|
|
|
|
CREATE POLICY "Admin can manage container settings"
|
|
ON public.container_settings FOR ALL
|
|
USING (true)
|
|
WITH CHECK (true);
|
|
|
|
DROP POLICY IF EXISTS "Users can view their own audit logs" ON public.audit_logs;
|
|
DROP POLICY IF EXISTS "Users can insert their own audit logs" ON public.audit_logs;
|
|
|
|
CREATE POLICY "Admin can view audit logs"
|
|
ON public.audit_logs FOR ALL
|
|
USING (true)
|
|
WITH CHECK (true);
|
|
|
|
-- Create function to initialize admin settings on first login
|
|
CREATE OR REPLACE FUNCTION public.ensure_admin_settings()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
-- Create default global settings if they don't exist
|
|
INSERT INTO public.global_settings (user_id)
|
|
SELECT NEW.id
|
|
WHERE NOT EXISTS (SELECT 1 FROM public.global_settings LIMIT 1);
|
|
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql SECURITY DEFINER SET search_path = public;
|
|
|
|
-- Trigger to ensure settings exist when admin logs in
|
|
CREATE TRIGGER ensure_admin_settings_on_login
|
|
AFTER INSERT ON auth.users
|
|
FOR EACH ROW EXECUTE FUNCTION public.ensure_admin_settings(); |