fix: lessons
This commit is contained in:
81
Les10-Supabase-Auth/Les10-Lesopdracht.md
Normal file
81
Les10-Supabase-Auth/Les10-Lesopdracht.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# 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!
|
||||
Reference in New Issue
Block a user