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

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

  1. user_id kolom op polls

    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!