51 lines
1.8 KiB
SQL
51 lines
1.8 KiB
SQL
-- Helper script to diagnose teacher insert permissions for training_stream_events
|
|
-- Update the constants below before running in Supabase SQL editor or psql.
|
|
|
|
-- >>> configure these for the teacher experiencing RLS failures <<<
|
|
WITH params AS (
|
|
-- Replace the UUID literals below before running
|
|
SELECT
|
|
'7bf7378e-a027-473e-97ac-3460ed3f170a'::uuid AS teacher_auth_id,
|
|
'bc333301-78cd-4ef0-a123-456789012345'::uuid AS target_class_id
|
|
),
|
|
teacher AS (
|
|
SELECT u.id AS user_id,
|
|
u.auth_id,
|
|
u.username,
|
|
u.email
|
|
FROM public.ak_users u
|
|
JOIN params p ON u.auth_id = p.teacher_auth_id
|
|
),
|
|
teacher_roles AS (
|
|
SELECT tr.id,
|
|
tr.user_id,
|
|
tr.class_id,
|
|
tr.role,
|
|
tr.created_at
|
|
FROM public.ak_teacher_roles tr
|
|
JOIN teacher t ON t.user_id = tr.user_id
|
|
),
|
|
class_match AS (
|
|
SELECT tr.id,
|
|
tr.class_id,
|
|
c.name AS class_name
|
|
FROM teacher_roles tr
|
|
LEFT JOIN public.ak_classes c ON c.id = tr.class_id
|
|
JOIN params p ON tr.class_id = p.target_class_id
|
|
)
|
|
SELECT
|
|
(SELECT to_jsonb(t) FROM teacher t) AS teacher_account,
|
|
(SELECT COALESCE(jsonb_agg(to_jsonb(tr)), '[]'::jsonb) FROM teacher_roles tr) AS all_teacher_roles,
|
|
(SELECT to_jsonb(cm) FROM class_match cm LIMIT 1) AS target_class_role,
|
|
EXISTS (
|
|
SELECT 1
|
|
FROM teacher t
|
|
JOIN public.ak_teacher_roles tr ON tr.user_id = t.user_id
|
|
JOIN params p ON tr.class_id = p.target_class_id
|
|
) AS has_class_assignment;
|
|
|
|
-- Next steps based on results:
|
|
-- 1. If teacher_account is null: insert the Supabase auth user into ak_users (see migrate scripts).
|
|
-- 2. If has_class_assignment is false: insert a row into ak_teacher_roles mapping the teacher to the class.
|
|
-- 3. After fixing data, retry the insert from the teacher client.
|