Rollen & toegang¶
Doel¶
Dit hoofdstuk beschrijft welke gebruikersrollen op de frontend relevant zijn, wat elke rol ziet en mag, en via welke mechanismen content wordt afgeschermd. Het is de basis voor alle rolafhankelijke acceptatiecriteria in de scherm-hoofdstukken.
Frontend-relevante rollen¶
| Rol (slug) | Naam | Gebruikers (aug 2026) | Frontend-betekenis |
|---|---|---|---|
| (geen) | Anoniem | — | Publieke bezoeker; paywall dicht, afgeschermde routes 401/403/404 |
subscriber |
Subscriber | 8 | Kan inloggen (GB-lid); geen toegang tot uitgaven, paywall blijft dicht |
wv-subscriber |
WV Abonnee | 6.568 | Digitale Waarheidsvriend: uitgaven-archief + flipbook + PDF; paywall-artikelen volledig leesbaar |
pastor |
Predikant | 645 | Toegang tot /predikant-gegevens/ (eigen profiel bewerken); verschijnt in de publieke predikantenlijst |
administrator, gb-admin, wv-admin, tr-admin, cgc-admin |
Beheerrollen | 1+4+6+5+3 | Alleen admin-bar-uitzondering op de frontend; géén impliciete toegang tot uitgaven of predikant-gegevens |
Overige rollen in de database (editor, editor-cgc, sermon-controller,
wh-subscriber, SEO- en ad-rollen) hebben geen frontend-gedrag; sermon-controller
en wh-subscriber zijn restanten zonder code-referenties. Rollen zijn combineerbaar:
een gebruiker met pastor én wv-subscriber krijgt de vereniging van beide.
De rol wv-subscriber wordt automatisch beheerd door de periodieke abonnee-import
(WP All Import): gebruikers in het importbestand krijgen de rol, gebruikers die er
niet meer in staan verliezen hem. Toegang is dus puur rolgestuurd en per direct.
Wat elke rol ziet (matrix)¶
| Gedrag / route | Anoniem | subscriber |
wv-subscriber |
pastor |
Beheerrollen |
|---|---|---|---|---|---|
| Topbar/header | "Inloggen"-link | dropdown | dropdown | dropdown | dropdown |
| Accountdropdown-items | — | Wachtwoord wijzigen, Uitloggen | Waarheidsvriend digitaal, Mijn account, Wachtwoord wijzigen, Uitloggen | Mijn account, Predikant gegevens, Wachtwoord wijzigen, Uitloggen | afhankelijk van rollen |
| Redirect na login | — | /account/ |
/uitgaven/ |
/account/ |
/account/ |
/uitgaven/ en /uitgaven/⟨slug⟩/ |
403 | 403 | 200 | 403 | 403 |
| Paywall-artikelen (403 van 8.728 WV-artikelen) | afgekapt bij marker | afgekapt | volledig | afgekapt | afgekapt |
/predikant-gegevens/ |
403 | 403 | 403 | 200 | 403 |
/account/, /wachtwoord-wijzigen/ |
200 + melding "U moet ingelogd zijn…" | formulier | formulier | formulier | formulier |
| Nieuwsbrief-editie-URL's | 404 | preview | preview | preview | preview |
Afgeschermde REST-routes (/wp/v2/wv-articles e.a.) |
401 | 200 (gb_locked: true) |
200 (gb_locked: false) |
200 (gb_locked: true) |
200 (gb_locked: true) |
| Admin bar | — | zichtbaar | verborgen | verborgen | zichtbaar |
Afschermingsmechanismen¶
1. Artikel-paywall (WV-artikelen)¶
- De artikelbody is opgebouwd uit ACF-componenten; een redacteur plaatst een
paywall-marker (component-layout
paywall) in de reeks. Bij het renderen stopt de weergave op de marker voor iedereen die niet vrijgesteld is; alles vóór de marker (chapeau, titel, intro, auteur, beeld) blijft zichtbaar. De tekst ná de marker staat niet in de HTML-bron. - Vrijgesteld is wie (a) is ingelogd met rol
wv-subscriber, of (b) het artikelgebonden nieuwsbriefcookie heeft: na inzending van het paywall-nieuwsbriefformulier wordt cookiesubscribed-to-newsletter(waarde = base64 van het post-ID, 10 jaar geldig) gezet en de bezoeker teruggeleid; het cookie ontgrendelt uitsluitend dát ene artikel. - Paywall-blok zonder cookie: titel "Dit artikel gratis verder lezen?" + tekst +
nieuwsbriefformulier (GF #29). Mét cookie (maar ander artikel): variant "Verder
lezen? Word abonnee!" met link naar
/de-waarheidsvriend/aanbieding/, zonder formulier. - Omvang: 403 van de 8.728 WV-artikelen bevatten een marker; artikelen zonder
marker zijn volledig openbaar. Titels en teksten komen per subsite uit ACF-opties
(
{KEY}_paywall_*). Volledige beschrijving incl. matrix: Artikel-single (WV).
2. Uitgaven-403 (digitale Waarheidsvriend)¶
/uitgaven/(archief) en/uitgaven/⟨slug⟩/(single, fullscreen flipbook met de uitgave-PDF) geven voor iedereen zonder rolwv-subscriber— ook anoniem, ook pastors en administrators — een HTTP 403 met de kale WordPress-foutmelding "U heeft geen toestemming om deze pagina te bekijken." (zie afwijking B12: bij de rebuild wordt dit een nette inlog-/word-abonnee-pagina).- Na inloggen wordt een
wv-subscriberautomatisch doorgestuurd naar/uitgaven/.
3. nginx-afscherming van uitgave-PDF's (alleen productie)¶
- De PDF-bestanden staan in
/wp-content/uploads/issues/. De productie-nginx geeft op dat pad 403 tenzij het request eenwordpress_logged_in_*-cookie bevat. De check is uitsluitend op cookie-áánwezigheid: elke ingelogde gebruiker (ongeacht rol) passeert; anonieme directe URL's niet. - Voor de app bestaat daarnaast een beschermde drukversie-link: REST-endpoint
gb-app/v1/issues/{id}/pdf-link(alleenwv-subscriber) levert een HMAC-ondertekende URL van 5 minuten geldig, waarnagb-app/v1/issues/{id}/pdf?uid&exp&sigde PDF streamt (Range/206-ondersteuning); de handtekening vervalt bij wachtwoordwijziging en bij verlies van het abonnement.
4. Predikant-403¶
/predikant-gegevens/(profielformulier voor predikanten) geeft HTTP 403 voor iedere bezoeker zonder rolpastor— ook anoniem, ook administrators.- Contrast: de predikantenlijst op
/over-de-gb/predikanten/is volledig publiek (doorzoekbaar en sorteerbaar, incl. adres-/contactgegevens van 645 predikanten; e-mail/telefoon alleen als HTML-entities geobfusceerd). Predikanten kunnen zich via hun profiel afmelden voor de aanvraagbare Excel-export ("Ik wil niet verschijnen in downloadlijsten"), niet voor de lijst zelf.
5. Zachte afscherming accountpagina's¶
/account/en/wachtwoord-wijzigen/geven anoniem HTTP 200 met de melding "U moet ingelogd zijn om deze pagina te kunnen bekijken.." (geen formulier, geen accountnavigatie); ingelogd verschijnt het bijbehorende formulier.
6. Nieuwsbrief-edities¶
- Single-URL's van
newsletter-editiongeven 404 voor niet-ingelogden; elke ingelogde gebruiker ziet een standalone HTML-preview (beheerfunctie).
7. REST- en app-afscherming¶
- REST-routes
/wp/v2/voorwv-articles,tr-articles,cgc-articles,issues,author,faith-questionsen de drie artikelcategorie-taxonomieën geven zonder authenticatie 401 "Authenticatie vereist." Elke ingelogde gebruiker (cookie of Bearer-token) passeert. - In de respons markeert het veld
gb_lockedde abonnee-status: voor niet-abonnees iscontent.renderedleeg, ontbreken de artikelcomponenten en ontbreektissue_filebij uitgaven; metadata (titel, chapeau, lead, auteur, beeld) blijft. - App-login via
gb-app/v1(JWT-access-token 1 uur, refresh-token 90 dagen, rate-limiting 5 pogingen/15 min, generieke foutmelding "Onjuiste inloggegevens."). Wachtwoordwijziging maakt alle tokens en PDF-links ongeldig.
Inloggen, registreren, accountbeheer (samenvatting)¶
/inloggen/: loginformulier (gebruikersnaam = e-mailadres, wachtwoord, "onthoud mij"), link "Wachtwoord vergeten" naar de standaard WP-lostpassword-flow./registreren/: registratieformulier (GF #17) dat eenwv-subscriber-account aanmaakt — direct actief met wachtwoord-instelmail als het e-mailadres bekend is bij de GB, anders wachtend op handmatige activatie (bevestigingstekst noemt 5–7 werkdagen)./account/(gegevens bijwerken, GF #18),/wachtwoord-wijzigen/(GF #25),/predikant-gegevens/(GF #24 incl. gemeenten-historie en export-opt-out).- Uitloggen verwijst naar
/inloggen.
De volledige flows staan in de sectie Formulieren en de accountschermen in de GB-sectie.
Acceptatiecriteria¶
- Als anoniem op een willekeurige pagina staat in topbar en header een "Inloggen"-link naar
/inloggen/. - Als anoniem op
/uitgaven/en op een uitgave-detail-URL volgt HTTP 403. - Als anoniem op
/predikant-gegevens/volgt HTTP 403. - Als anoniem op
/account/en/wachtwoord-wijzigen/volgt HTTP 200 met de melding dat inloggen vereist is, zonder formulier. - Als anoniem op een WV-artikel mét paywall-marker is de tekst ná de marker afwezig in de HTML-bron en verschijnt het paywall-blok "Dit artikel gratis verder lezen?" met nieuwsbriefformulier.
- Als anoniem die het paywall-formulier inzendt, is daarna precies dát artikel volledig leesbaar; een ánder paywall-artikel toont "Verder lezen? Word abonnee!" zonder formulier.
- Als anoniem op een WV-artikel zónder paywall-marker is de volledige tekst zichtbaar.
- Als anoniem op
/over-de-gb/predikanten/is de predikantenlijst volledig zichtbaar, doorzoekbaar (?search=) en sorteerbaar (?sort=). - Als anoniem op de afgeschermde REST-routes volgt 401; op een nieuwsbrief-editie-URL volgt 404.
- Als ingelogde
subscriber(zonder WV-abonnement) toont de accountdropdown alleen "Wachtwoord wijzigen" en "Uitloggen";/uitgaven/*geeft 403 en paywall-artikelen blijven afgekapt. - Als
wv-subscriberword ik na inloggen doorgestuurd naar/uitgaven/; het archief toont uitgaven met cover en paginering en een uitgave opent als fullscreen bladerbare PDF. - Als
wv-subscriberzijn alle paywall-artikelen volledig leesbaar en is de admin bar verborgen. - Als
wv-subscriberlevertGET /gb-app/v1/issues/{id}/pdf-linkeen URL die maximaal 5 minuten geldig is en de PDF inline streamt; na wachtwoordwijziging is die link ongeldig. - Als
pastortoont de accountdropdown "Mijn account", "Predikant gegevens", "Wachtwoord wijzigen" en "Uitloggen" (geen "Waarheidsvriend digitaal");/predikant-gegevens/toont het profielformulier;/uitgaven/*geeft 403. - Als
pastordie het profiel opslaat, zijn de wijzigingen daarna zichtbaar op de publieke predikantenlijst; met opt-out aangevinkt ontbreekt de predikant in de Excel-export. - Als beheerder (administrator/
*-admin) is de admin bar zichtbaar en is er géén toegang tot/uitgaven/*of/predikant-gegevens/zonder de betreffende rol. - Als anoniem op een directe PDF-URL onder
/wp-content/uploads/issues/volgt (op productie) HTTP 403; met login-cookie wordt de PDF geleverd. - Als gebruiker die de rol
wv-subscriberverliest (importrun), geldt per direct het niet-abonneegedrag.
Bekende afwijkingen¶
Zie de verzamelpagina, met name: kale WP-403-pagina's op
uitgaven en predikant-gegevens (B12), ontbrekende "Mijn account"-link voor de rol
subscriber (B13), de publiek bereikbare Waarheidsvriend-PDF via een flipbook-URL
buiten de afscherming om (D2) en het open GraphQL-endpoint (E1).