Fix security warnings
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
-- 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();
|
||||
Reference in New Issue
Block a user