mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 09:31:13 -05:00
Refactor: Approve RLS migration
This commit is contained in:
@@ -0,0 +1,76 @@
|
|||||||
|
-- Add AAL2 enforcement for users with MFA enrolled
|
||||||
|
-- This provides defense-in-depth at the database level
|
||||||
|
|
||||||
|
-- Update RLS policy on content_submissions to enforce AAL2 for moderators
|
||||||
|
DROP POLICY IF EXISTS "Moderators can view all submissions" ON public.content_submissions;
|
||||||
|
CREATE POLICY "Moderators can view all submissions"
|
||||||
|
ON public.content_submissions
|
||||||
|
FOR SELECT
|
||||||
|
TO authenticated
|
||||||
|
USING (
|
||||||
|
is_moderator(auth.uid()) AND (
|
||||||
|
-- Allow if user doesn't have MFA OR has AAL2
|
||||||
|
NOT EXISTS (
|
||||||
|
SELECT 1 FROM auth.mfa_factors
|
||||||
|
WHERE user_id = auth.uid() AND status = 'verified'
|
||||||
|
) OR has_aal2()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP POLICY IF EXISTS "Moderators can update submissions" ON public.content_submissions;
|
||||||
|
CREATE POLICY "Moderators can update submissions"
|
||||||
|
ON public.content_submissions
|
||||||
|
FOR UPDATE
|
||||||
|
TO authenticated
|
||||||
|
USING (
|
||||||
|
is_moderator(auth.uid()) AND (
|
||||||
|
NOT EXISTS (
|
||||||
|
SELECT 1 FROM auth.mfa_factors
|
||||||
|
WHERE user_id = auth.uid() AND status = 'verified'
|
||||||
|
) OR has_aal2()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Apply same enforcement to submission_items
|
||||||
|
DROP POLICY IF EXISTS "Moderators can update submission items" ON public.submission_items;
|
||||||
|
CREATE POLICY "Moderators can update submission items"
|
||||||
|
ON public.submission_items
|
||||||
|
FOR UPDATE
|
||||||
|
TO authenticated
|
||||||
|
USING (
|
||||||
|
is_moderator(auth.uid()) AND (
|
||||||
|
NOT EXISTS (
|
||||||
|
SELECT 1 FROM auth.mfa_factors
|
||||||
|
WHERE user_id = auth.uid() AND status = 'verified'
|
||||||
|
) OR has_aal2()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP POLICY IF EXISTS "Moderators can delete submission items" ON public.submission_items;
|
||||||
|
CREATE POLICY "Moderators can delete submission items"
|
||||||
|
ON public.submission_items
|
||||||
|
FOR DELETE
|
||||||
|
TO authenticated
|
||||||
|
USING (
|
||||||
|
is_moderator(auth.uid()) AND (
|
||||||
|
NOT EXISTS (
|
||||||
|
SELECT 1 FROM auth.mfa_factors
|
||||||
|
WHERE user_id = auth.uid() AND status = 'verified'
|
||||||
|
) OR has_aal2()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Apply same enforcement to user_roles table for role management
|
||||||
|
DROP POLICY IF EXISTS "Moderators can manage roles" ON public.user_roles;
|
||||||
|
CREATE POLICY "Moderators can manage roles"
|
||||||
|
ON public.user_roles
|
||||||
|
FOR ALL
|
||||||
|
TO authenticated
|
||||||
|
USING (
|
||||||
|
is_moderator(auth.uid()) AND (
|
||||||
|
NOT EXISTS (
|
||||||
|
SELECT 1 FROM auth.mfa_factors
|
||||||
|
WHERE user_id = auth.uid() AND status = 'verified'
|
||||||
|
) OR has_aal2()
|
||||||
|
)
|
||||||
|
);
|
||||||
Reference in New Issue
Block a user