Files
novi-lessons/Les10-Supabase-Auth/Les10-Lesopdracht.md
2026-06-07 15:15:11 +02:00

82 lines
2.0 KiB
Markdown

# 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](./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
1. **`user_id` kolom op `polls`**
```sql
alter table polls add column user_id uuid references auth.users(id);
```
En in je `createPoll` action: stuur `auth.uid()` mee.
2. **Vier RLS-policies op `polls`**
- Public select
- Auth users insert (eigen user_id)
- Owner update
- Owner delete
3. **Twee RLS-policies op `options`**
- Public select
- Owner-van-poll insert
4. **`/my-polls` pagina**
- Server component
- Toont alleen polls van ingelogde user
- Edit-knop per poll (alleen voor eigenaar)
- Delete-knop met confirm
5. **`/polls/[id]/edit` route**
- Toont 404 als poll niet bestaat of niet van jou is
- Form om vraag en opties aan te passen
6. **Middleware-bescherming**
- `/create` → redirect naar `/login` als anoniem
- `/my-polls` → idem
---
### Stappenplan
1. Migratie + `user_id` aanpassen (10 min)
2. RLS-policies schrijven en testen in Supabase dashboard (15 min)
3. `/my-polls` pagina bouwen (15 min)
4. Edit + delete flows (15 min)
5. 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 `using` clause is te streng — gebruik `using (true)` voor public select
- Test ALTIJD met 2 accounts. Anders zie je geen security-gaten.
Veel succes!