-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfix_canvas_uuid_error.sql
More file actions
49 lines (37 loc) · 1.71 KB
/
fix_canvas_uuid_error.sql
File metadata and controls
49 lines (37 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
-- EMERGENCY FIX: Resolving UUID Format Error for Social Login (Numeric IDs)
-- This script converts user_id to TEXT to accommodate numeric NextAuth IDs (like from GitHub)
-- and updates RLS policies to be type-agnostic.
-- 1. DROP EXISTING CONSTRAINTS AND POLICIES
ALTER TABLE public.personal_canvas
DROP CONSTRAINT IF EXISTS personal_canvas_user_id_fkey;
DROP POLICY IF EXISTS "Users can view own canvas" ON public.personal_canvas;
DROP POLICY IF EXISTS "Users can insert own canvas" ON public.personal_canvas;
DROP POLICY IF EXISTS "Users can update own canvas" ON public.personal_canvas;
DROP POLICY IF EXISTS "Users can delete own canvas" ON public.personal_canvas;
-- 2. ALTER COLUMN TYPE
-- First, cast existing data if any (UUID to TEXT is safe)
ALTER TABLE public.personal_canvas ALTER COLUMN user_id TYPE TEXT;
-- 3. RECREATE RLS POLICIES (Type-Safe using ::text)
ALTER TABLE public.personal_canvas ENABLE ROW LEVEL SECURITY;
-- Select: Match decoded JWT sub against user_id
CREATE POLICY "Users can view own canvas" ON public.personal_canvas FOR
SELECT USING (
(auth.uid())::text = user_id::text
);
-- Insert: Match decoded JWT sub against user_id
CREATE POLICY "Users can insert own canvas" ON public.personal_canvas FOR
INSERT WITH CHECK (
(auth.uid())::text = user_id::text
);
-- Update: Match decoded JWT sub against user_id
CREATE POLICY "Users can update own canvas" ON public.personal_canvas FOR
UPDATE USING (
(auth.uid())::text = user_id::text
);
-- Delete: Match decoded JWT sub against user_id
CREATE POLICY "Users can delete own canvas" ON public.personal_canvas FOR
DELETE USING (
(auth.uid())::text = user_id::text
);
-- Log result
SELECT 'FIX: personal_canvas now supports numeric social IDs' as status;