@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.
- package/lib/supabase/client.d.ts +9 -0
- package/lib/supabase/middleware.d.ts +2 -0
- package/lib/supabase/server.d.ts +7 -0
- package/lib/supabase/ssg-client.d.ts +2 -0
- package/lib/supabase/types.d.ts +635 -0
- package/package.json +2 -1
- package/supabase/migrations/20250521143933_seed_homepage_and_nav.sql +0 -12
- package/supabase/migrations/20251112140000_scaffold_foundational_content.sql +19 -6
- package/supabase/migrations/20251112141000_seed_homepage_blocks.sql +69 -72
- package/supabase/migrations/20251126100000_seed_site_logo.sql +33 -0
- package/supabase/migrations/20251126133000_fix_blocks_rls.sql +49 -0
|
@@ -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;
|