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

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 /profile pagina
  • Eerste eigenaars-RLS op polls
  • Korte reflectie auth vs. autorisatie

Deel 1 — Profielpagina (45 min)

Bouw een /profile route die:

  1. Alleen zichtbaar is voor ingelogde gebruikers
    • Anoniem? → redirect naar /login
  2. Toont:
    • Email
    • User-ID (UUID)
    • Aanmaakdatum (user.created_at)
  3. 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:

  1. Wat is het verschil tussen authenticatie en autorisatie?
  2. Waarom is RLS in de database veiliger dan een check in je server action?
  3. Wat zou er fout gaan als je RLS uitzette? Geef een concreet scenario.

Op te leveren

  • GitHub-link naar repo met:
    • Werkende /profile route
    • Werkende RLS-policies (zie screenshot in dashboard)
    • REFLECTIE.md in repo-root met je antwoorden
  • 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.md opnieuw — sectie 7
  • Stuck op RLS? Vraag in Teams #hulp-vragen
  • Test je policies altijd met TWEE accounts. Anders mis je security-gaten.

Veel succes!