Ga naar inhoud

Uitgaven-toegang (afscherming)

Doel & URL('s)

Deze pagina beschrijft alleen de toegangsregels rond de digitale uitgaven van De Waarheidsvriend. De inhoud en opbouw van het uitgavenarchief en de flipbook-weergave staan in de sectie De Waarheidsvriend (uitgaven/archief en uitgave-detail).

  • URL's: /uitgaven/ (archief, post type issue) en /uitgaven/{slug}/ (single uitgave, Real3D-flipbook met de PDF uit ACF-veld issue_file)

Toegangsregels

Route/bron Regel Buitenstaander krijgt
/uitgaven/ rol wv-subscriber vereist (wp_die in controller) HTTP 403 "U heeft geen toestemming om deze pagina te bekijken."
/uitgaven/{slug}/ idem HTTP 403
/wp-content/uploads/issues/* (PDF's, alleen prod-nginx) request moet een wordpress_logged_in_*-cookie hebben HTTP 403
REST wp/v2/issues ingelogd vereist (401); veld gb_locked: true + acf.issue_file verwijderd voor niet-abonnees 401 / uitgeklede respons
REST gb-app/v1/issues/{id}/pdf-link ingelogd + rol wv-subscriber 401 / 403

Kernpunten:

  • De check is zuiver op rol wv-subscriber — ook ingelogde niet-abonnees, predikanten en administrators zonder die rol krijgen 403.
  • Na inloggen wordt een wv-subscriber automatisch naar /uitgaven/ doorgestuurd (zie Inloggen).
  • Het accountnavigatie-item "Waarheidsvriend digitaal" (→ /uitgaven) is alleen zichtbaar voor wv-subscriber.
  • Het "Lees de laatste uitgave"-blok op de homepage linkt voor anonieme bezoekers naar /inloggen/ in plaats van naar de uitgave.
  • De nginx-PDF-bescherming controleert alleen op aanwezigheid van een login-cookie, niet op de abonnee-rol: elke ingelogde gebruiker die een directe PDF-URL kent kan het bestand ophalen. De beschermde app-route (pdf-link, zie App-authenticatie) checkt wél op de rol.
  • Rolverlies via de abonnee-import werkt direct door: zonder rol geldt onmiddellijk het 403-gedrag (geen sessie-cache).

Databronnen

Bron Detail
Post type issue, archief-slug uitgaven; ACF issue_file (PDF), issue_cover, nummer/jaar/maand/dag
Controllers Archive (trait Issue\Overview), SingleIssue (trait Issue\Single) — beide met rol-check + wp_die(403)
nginx (prod) location ^~ /wp-content/uploads/issues/ → 403 zonder login-cookie
mu-plugins gb-app-auth (gb_locked), gb-app-pdf (beschermde drukversie-link)

Acceptatiecriteria

  • Als anoniem /uitgaven/ opvraag, dan krijg ik HTTP 403.
  • Als anoniem een uitgave-detail-URL (/uitgaven/{slug}/) opvraag, dan krijg ik HTTP 403.
  • Als subscriber (zonder WV-abonnement) /uitgaven/ opvraag, dan krijg ik HTTP 403.
  • Als pastor (zonder WV-abonnement) /uitgaven/ opvraag, dan krijg ik HTTP 403.
  • Als administrator zonder rol wv-subscriber /uitgaven/ opvraag, dan krijg ik HTTP 403 (huidig gedrag).
  • Als wv-subscriber /uitgaven/ open, dan zie ik het uitgavenarchief (verdere criteria: zie de WV-sectie).
  • Als wv-subscriber een uitgave open, dan laadt de flipbook-viewer fullscreen met de PDF van die uitgave.
  • Als anoniem op productie een directe PDF-URL onder /wp-content/uploads/issues/ opvraag, dan krijg ik HTTP 403.
  • Als anoniem wp/v2/issues opvraag, dan krijg ik 401; als ingelogde niet-abonnee bevat de respons gb_locked: true en geen issue_file; als wv-subscriber gb_locked: false mét issue_file.
  • Als wv-subscriber die de rol verliest (importrun) daarna /uitgaven/ opvraag, dan krijg ik HTTP 403.

Bekende afwijkingen

Niet nabouwen in Next.js, wel vermelden in het testrapport

  • PDF-cookiecheck te ruim: de prod-nginx-regel voor /uploads/issues/* eist alleen een login-cookie, geen abonnee-rol. In de rebuild moet uitlevering rolgebonden zijn (zoals de beschermde app-route al doet).
  • Flipbooks buiten de afscherming: er bestaan publieke Real3D-flipbooks op /?r3d={slug} waarvan er één een openbaar toegankelijke Waarheidsvriend-PDF buiten /uploads/issues/ serveert. Niet overnemen zonder expliciet besluit (mogelijk bedoelde gratis proefuitgave); zie bekende afwijkingen, D2.
  • De "U moet ingelogd zijn…"-fallbacks in de issue-views zijn dode code (controller geeft altijd eerst 403).