@nextblock-cms/db 0.2.18 → 0.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,33 @@
1
+ -- supabase/migrations/20251126100000_seed_site_logo.sql
2
+
3
+ DO $$
4
+ DECLARE
5
+ v_logo_media_id UUID := gen_random_uuid();
6
+ v_admin_id UUID;
7
+ BEGIN
8
+ -- Get an admin user ID to set as uploader (optional, fallback to NULL)
9
+ SELECT id INTO v_admin_id FROM public.profiles WHERE role = 'ADMIN' LIMIT 1;
10
+
11
+ -- Insert the logo into the media table
12
+ INSERT INTO public.media (id, uploader_id, file_name, object_key, file_type, size_bytes, description)
13
+ VALUES (
14
+ v_logo_media_id,
15
+ v_admin_id,
16
+ 'nextblock-logo-small.webp',
17
+ '/images/nextblock-logo-small.webp',
18
+ 'image/webp',
19
+ 10000, -- Dummy size
20
+ 'NextBlock Site Logo'
21
+ )
22
+ ON CONFLICT (object_key) DO UPDATE
23
+ SET
24
+ file_name = excluded.file_name,
25
+ file_type = excluded.file_type,
26
+ description = excluded.description
27
+ RETURNING id INTO v_logo_media_id;
28
+
29
+ -- Insert the logo into the logos table
30
+ INSERT INTO public.logos (name, media_id)
31
+ VALUES ('NextBlock Logo', v_logo_media_id);
32
+
33
+ END $$;
@@ -0,0 +1,49 @@
1
+ -- Fix blocks update policy
2
+ -- Explicitly allow authenticated users with ADMIN or WRITER roles to update blocks
3
+ -- Cleans up potential conflicting policies and ensures permissions are granted
4
+
5
+ BEGIN;
6
+
7
+ -- 1. Grant permissions to the role (in case they were missing)
8
+ GRANT ALL ON TABLE public.blocks TO authenticated;
9
+ GRANT USAGE, SELECT ON SEQUENCE public.blocks_id_seq TO authenticated;
10
+
11
+ -- 2. Drop ALL known previous/conflicting update policies
12
+ DROP POLICY IF EXISTS "Allow authenticated users to update blocks" ON public.blocks;
13
+ DROP POLICY IF EXISTS "Allow admins and writers to update blocks" ON public.blocks;
14
+ DROP POLICY IF EXISTS "blocks_admin_writer_can_update" ON public.blocks;
15
+ DROP POLICY IF EXISTS "admins_and_writers_can_manage_blocks" ON public.blocks;
16
+
17
+ -- 3. Create new policy using the trusted security definer function
18
+ -- We use get_my_role() which is SECURITY DEFINER to bypass RLS on profiles table
19
+ CREATE POLICY "Allow admins and writers to update blocks"
20
+ ON public.blocks
21
+ FOR UPDATE
22
+ TO authenticated
23
+ USING (
24
+ get_my_role() IN ('ADMIN', 'WRITER')
25
+ )
26
+ WITH CHECK (
27
+ get_my_role() IN ('ADMIN', 'WRITER')
28
+ );
29
+
30
+ -- 4. Also fix INSERT/DELETE just in case, using the same robust method
31
+ DROP POLICY IF EXISTS "blocks_admin_writer_can_insert" ON public.blocks;
32
+ CREATE POLICY "Allow admins and writers to insert blocks"
33
+ ON public.blocks
34
+ FOR INSERT
35
+ TO authenticated
36
+ WITH CHECK (
37
+ get_my_role() IN ('ADMIN', 'WRITER')
38
+ );
39
+
40
+ DROP POLICY IF EXISTS "blocks_admin_writer_can_delete" ON public.blocks;
41
+ CREATE POLICY "Allow admins and writers to delete blocks"
42
+ ON public.blocks
43
+ FOR DELETE
44
+ TO authenticated
45
+ USING (
46
+ get_my_role() IN ('ADMIN', 'WRITER')
47
+ );
48
+
49
+ COMMIT;