2.2 KiB
2.2 KiB
Les 9 — Huiswerk
Verdieping: profielpagina + eerste RLS-policy
Duur: ~2 uur take-home werk. In te leveren voor Les 10.
Doel
Je QuickPoll-app uit de lesopdracht verder uitbouwen:
- Beschermde
/profilepagina - Eerste eigenaars-RLS op
polls - Korte reflectie auth vs. autorisatie
Deel 1 — Profielpagina (45 min)
Bouw een /profile route die:
- Alleen zichtbaar is voor ingelogde gebruikers
- Anoniem? → redirect naar
/login
- Anoniem? → redirect naar
- Toont:
- User-ID (UUID)
- Aanmaakdatum (
user.created_at)
- Bevat een "Wijzig wachtwoord"-knop (mag mock zijn, link naar
#)
Tip: gebruik getUser() in de server component zelf. Geen useEffect-gedoe.
Deel 2 — Eigenaars-RLS (45 min)
Voeg een user_id-kolom toe aan je polls tabel:
alter table polls add column user_id uuid references auth.users(id);
Pas je createPoll-action aan zodat hij de user_id van de huidige user mee-stuurt.
Schrijf RLS-policies:
-- Iedereen mag polls lezen
create policy "polls public read"
on polls for select
using (true);
-- Alleen eigenaar mag updaten
create policy "owner can update poll"
on polls for update
using (auth.uid() = user_id);
-- Alleen eigenaar mag verwijderen
create policy "owner can delete poll"
on polls for delete
using (auth.uid() = user_id);
Test: maak een poll aan met account A, log in als B, probeer A's poll te bewerken. Wat gebeurt er?
Deel 3 — Reflectie (30 min, ~300 woorden)
Beantwoord:
- Wat is het verschil tussen authenticatie en autorisatie?
- Waarom is RLS in de database veiliger dan een check in je server action?
- Wat zou er fout gaan als je RLS uitzette? Geef een concreet scenario.
Op te leveren
- GitHub-link naar repo met:
- Werkende
/profileroute - Werkende RLS-policies (zie screenshot in dashboard)
REFLECTIE.mdin repo-root met je antwoorden
- Werkende
- Screenshot van Supabase dashboard → Authentication → Policies (laat je policies zien)
Inleveren: Via Teams chat. Deadline: voor Les 10.
Twijfel?
- Geen idee waar te beginnen? Lees
Les09-Lesstof.mdopnieuw — sectie 7 - Stuck op RLS? Vraag in Teams
#hulp-vragen - Test je policies altijd met TWEE accounts. Anders mis je security-gaten.
Veel succes!