rebreak-monorepo/backend/prisma/migrations/add_game_challenges_rls.sql

21 lines
856 B
SQL

-- Enable RLS on game_challenges so Supabase Realtime can use auth.uid() for row filtering
-- Without RLS, Realtime falls back to an empty role which causes "role "" does not exist" errors
ALTER TABLE rebreak.game_challenges ENABLE ROW LEVEL SECURITY;
-- Both players can read the game they are part of
CREATE POLICY "players can read their game" ON rebreak.game_challenges
FOR SELECT USING (
auth.uid() = challenger_id OR auth.uid() = opponent_id
);
-- Only the challenger can create the game row
CREATE POLICY "challenger can create game" ON rebreak.game_challenges
FOR INSERT WITH CHECK (auth.uid() = challenger_id);
-- Both players can update the game (make moves, accept/cancel)
CREATE POLICY "players can update their game" ON rebreak.game_challenges
FOR UPDATE USING (
auth.uid() = challenger_id OR auth.uid() = opponent_id
);