# 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: ```sql 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: ```sql -- 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!