mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 08:11:13 -05:00
Fix blog posts RLS policy
This commit is contained in:
@@ -0,0 +1,55 @@
|
|||||||
|
-- Relax blog_posts RLS policies to remove AAL2 requirement for SELECT
|
||||||
|
-- This allows admins to view blog posts without constant MFA step-up
|
||||||
|
-- Write operations still require AAL2 for security
|
||||||
|
|
||||||
|
-- Drop the existing combined admin policy
|
||||||
|
DROP POLICY IF EXISTS "Admins and superusers can manage blog posts" ON public.blog_posts;
|
||||||
|
|
||||||
|
-- Create separate SELECT policy without AAL2 requirement
|
||||||
|
CREATE POLICY "Admins can view all blog posts"
|
||||||
|
ON public.blog_posts
|
||||||
|
FOR SELECT
|
||||||
|
TO authenticated
|
||||||
|
USING (
|
||||||
|
has_role(auth.uid(), 'admin'::app_role) OR
|
||||||
|
has_role(auth.uid(), 'superuser'::app_role)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Create INSERT policy with AAL2 requirement for write operations
|
||||||
|
CREATE POLICY "Admins can create blog posts with AAL2"
|
||||||
|
ON public.blog_posts
|
||||||
|
FOR INSERT
|
||||||
|
TO authenticated
|
||||||
|
WITH CHECK (
|
||||||
|
(has_role(auth.uid(), 'admin'::app_role) OR has_role(auth.uid(), 'superuser'::app_role))
|
||||||
|
AND ((NOT EXISTS (
|
||||||
|
SELECT 1 FROM auth.mfa_factors
|
||||||
|
WHERE user_id = auth.uid() AND status = 'verified'::auth.factor_status
|
||||||
|
)) OR has_aal2())
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Create UPDATE policy with AAL2 requirement for write operations
|
||||||
|
CREATE POLICY "Admins can update blog posts with AAL2"
|
||||||
|
ON public.blog_posts
|
||||||
|
FOR UPDATE
|
||||||
|
TO authenticated
|
||||||
|
USING (
|
||||||
|
(has_role(auth.uid(), 'admin'::app_role) OR has_role(auth.uid(), 'superuser'::app_role))
|
||||||
|
AND ((NOT EXISTS (
|
||||||
|
SELECT 1 FROM auth.mfa_factors
|
||||||
|
WHERE user_id = auth.uid() AND status = 'verified'::auth.factor_status
|
||||||
|
)) OR has_aal2())
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Create DELETE policy with AAL2 requirement for write operations
|
||||||
|
CREATE POLICY "Admins can delete blog posts with AAL2"
|
||||||
|
ON public.blog_posts
|
||||||
|
FOR DELETE
|
||||||
|
TO authenticated
|
||||||
|
USING (
|
||||||
|
(has_role(auth.uid(), 'admin'::app_role) OR has_role(auth.uid(), 'superuser'::app_role))
|
||||||
|
AND ((NOT EXISTS (
|
||||||
|
SELECT 1 FROM auth.mfa_factors
|
||||||
|
WHERE user_id = auth.uid() AND status = 'verified'::auth.factor_status
|
||||||
|
)) OR has_aal2())
|
||||||
|
);
|
||||||
Reference in New Issue
Block a user