2.0 KiB
2.0 KiB
Les 10 — Lesopdracht
Volledige auth + RLS-policies werkend krijgen
Duur: ~60 minuten in-class.
Voor de gedetailleerde hands-on stappen: zie de Les10-Hands-on.pdf bijlage.
Doel
Aan het einde van deze opdracht is jouw QuickPoll-fork multi-user veilig:
- Eigen polls aanmaken
- Eigen polls bewerken en verwijderen
- Andermans polls bekijken maar niet wijzigen
- "My Polls" pagina toont alleen jouw polls
Vereisten
-
user_idkolom oppollsalter table polls add column user_id uuid references auth.users(id);En in je
createPollaction: stuurauth.uid()mee. -
Vier RLS-policies op
polls- Public select
- Auth users insert (eigen user_id)
- Owner update
- Owner delete
-
Twee RLS-policies op
options- Public select
- Owner-van-poll insert
-
/my-pollspagina- Server component
- Toont alleen polls van ingelogde user
- Edit-knop per poll (alleen voor eigenaar)
- Delete-knop met confirm
-
/polls/[id]/editroute- Toont 404 als poll niet bestaat of niet van jou is
- Form om vraag en opties aan te passen
-
Middleware-bescherming
/create→ redirect naar/loginals anoniem/my-polls→ idem
Stappenplan
- Migratie +
user_idaanpassen (10 min) - RLS-policies schrijven en testen in Supabase dashboard (15 min)
/my-pollspagina bouwen (15 min)- Edit + delete flows (15 min)
- Test met 2 accounts (5 min)
Op te leveren
- GitHub-commit met werkende code
- Screenshot van Supabase dashboard → Policies (4 op polls, 2 op options)
- 5-zinnen-reflectie: wat ging fout in je RLS, hoe ontdekte je dat?
Inleveren: Push naar QuickPoll-repo én screenshot in Teams chat.
Hulp nodig?
- RLS doet niks? Check dat RLS daadwerkelijk aan staat (alter table ... enable)
- "Permission denied" overal? Je
usingclause is te streng — gebruikusing (true)voor public select - Test ALTIJD met 2 accounts. Anders zie je geen security-gaten.
Veel succes!