@@ -9,7 +9,9 @@ create table public.leaderboards (
99 join_code text not null unique,
1010 created_at timestamptz NOT NULL default now()
1111);
12+
1213alter table public .leaderboards enable row level security;
14+
1315/* ---- Leaderboards Members ----- */
1416create table public .leaderboard_members (
1517 id uuid primary key default gen_random_uuid(),
@@ -19,7 +21,9 @@ create table public.leaderboard_members (
1921 joined_at timestamptz NOT NULL default now(),
2022 unique (leaderboard_id, user_id)
2123);
24+
2225alter table public .leaderboard_members enable row level security;
26+
2327/* ---- Leaderboards Members View ----- */
2428create view public .leaderboard_members_view as
2529select
@@ -35,32 +39,39 @@ select
3539from public .leaderboard_members lm
3640join auth .users u on lm .user_id = u .id
3741left join public .user_stats us on lm .user_id = us .user_id ;
42+
3843/* ---- RLS Policies ----- */
3944create policy " Public leaderboards are viewable"
4045on public .leaderboards
4146for select
4247using (is_public = true OR owner_id = auth .uid ());
48+
4349create policy " Users can create leaderboards"
4450on public .leaderboards
4551for insert
4652with check (auth .uid () = owner_id);
53+
4754create policy " Owner can update leaderboard"
4855on public .leaderboards
4956for update
5057using (auth .uid () = owner_id);
58+
5159/* ---- Members Policies ----- */
5260create policy " Users can see their own membership"
5361on public .leaderboard_members
5462for select
5563using (user_id = auth .uid ());
64+
5665create policy " Users can join leaderboard"
5766on public .leaderboard_members
5867for insert
5968with check (auth .uid () = user_id);
69+
6070create policy " Members can leave leaderboard"
6171on public .leaderboard_members
6272for delete
6373using (user_id = auth .uid ());
74+
6475create policy " Owner can manage members"
6576on public .leaderboard_members
6677for delete
0 commit comments