Ga naar inhoud

Uitgaven (Waarheidsvriend digitaal)

Doel & URL('s)

Digitaal lezen van de papieren uitgaven van De Waarheidsvriend — het kernvoordeel van het (digitale) abonnement. Beide schermen zijn exclusief voor ingelogde gebruikers met rol wv-subscriber.

Scherm URL
Uitgavenarchief /uitgaven/ (+ /uitgaven/page/{n}/)
Uitgave lezen (flipbook) /uitgaven/{slug}/ (bijv. /uitgaven/de-waarheidsvriend-2026-11/)

Post type issue, ±205 gepubliceerde uitgaven; titelpatroon "De Waarheidsvriend {jaar} {nummer}". Menu-item "Waarheidsvriend digitaal" (in het GB- én WV-menu) verwijst naar /uitgaven/.

Opbouw

Uitgavenarchief /uitgaven/

Layout met sidebar links; alleen zichtbaar voor abonnees (zie Gedrag):

  1. Kaartengrid — 10 uitgaven per pagina, nieuwste eerst. Per kaart:
    • cover (issue_cover, formaat 328×464; fallback uit optie fallback_image),
    • uitgavenummer (issue_number), jaar, dag + maand (NL),
    • hover-overlay met knop "Bekijk uitgave"; de link opent de uitgave in een nieuw tabblad.
  2. Paginering (paginanummers zonder vorige/volgende).
  3. Sidebar:
    • Accountblok — "Ingelogd: {voornaam} {achternaam}" met links: "Waarheidsvriend digitaal" → /uitgaven (alleen abonnee), "Mijn account" → /account (abonnee of predikant), "Predikant gegevens" → /predikant-gegevens (alleen predikant), "Wachtwoord wijzigen" → /wachtwoord-wijzigen, "Uitloggen" (naar /inloggen).
    • Maandarchief — maandlinks (bijv. "maart 2026" → /2026/03/?post_type=issue).
  4. Site-brede schil (nieuwsbriefsectie + footer).

Uitgave lezen /uitgaven/{slug}/

Kale pagina zonder header/footer: een fullscreen Real3D-flipbook (bladerbare PDF-viewer, WebGL) over de hele pagina, gevoed door het PDF-bestand van de uitgave (issue_file, geüpload naar uploads/issues/).

Databronnen

Veld/optie Type Gebruik
issue_number text (verplicht) nummer op de kaart
issue_cover image (verplicht) cover op kaart en homepage-blok
issue_file file (verplicht; upload gedwongen naar uploads/issues/) PDF voor flipbook en app
Blogoptie posts_per_page = 10 paginagrootte archief
Optie fallback_image image cover-fallback

Gedrag & rollen

Toegangsregel (huidig gedrag)

  • Iedereen zonder rol wv-subscriber — anoniem, ingelogd zonder rol, pastor, én admin-rollen — krijgt op /uitgaven/ en /uitgaven/{slug}/ een HTTP 403 met de kale WordPress-foutpagina "U heeft geen toestemming om deze pagina te bekijken." (De nette "log eerst in"-teksten in de views zijn dode code; ze worden nooit bereikt.)
  • Ingelogd mét rol wv-subscriber: HTTP 200; archief en flipbook volledig functioneel.
  • Login-redirect: na inloggen (via /inloggen/ of wp-login) wordt een gebruiker met rol wv-subscriber doorgestuurd naar /uitgaven/; andere rollen naar /account/.

Bescherming van het PDF-bestand (webserver)

  • …/uploads/issues/* (zowel het Bedrock-pad /app/uploads/issues/ als het legacy-pad /wp-content/uploads/issues/) antwoordt 403 zonder WordPress-login-cookie; mét login-cookie wordt het bestand uitgeleverd (proxy naar Azure Blob, met Range-support en lange cache-headers).
  • De check is een aanwezigheidstest op de cookienaam (wordpress_logged_in_*), geen validatie — de "harde" beveiliging zit dus op sessieniveau, niet op abonnementsniveau.

App/headless (ter referentie)

Voor de app bestaat een beschermde drukversie-flow: GET /gb-app/v1/issues/{id}/pdf-link (alleen wv-subscriber; 401/403 anders) levert een HMAC-ondertekende URL op met 5 minuten geldigheid; de uitleverings-endpoint valideert handtekening/vervaltijd/abonnement en streamt de PDF met Range/206-support. In REST (/wp/v2/issues, alleen geauthenticeerd) wordt issue_file verwijderd voor niet-abonnees (gb_locked: true). Details: zie Bestaand API-oppervlak.

Acceptatiecriteria

  • Als anonieme bezoeker op /uitgaven/ dan HTTP 403 (huidig: kale WP-melding "U heeft geen toestemming om deze pagina te bekijken."). Rebuild-doel: een nette afschermpagina met uitleg + routes naar inloggen en abonneren in plaats van de kale 403 (functioneel: geen uitgave-inhoud zichtbaar voor niet-abonnees).
  • Als anonieme bezoeker op /uitgaven/{slug}/ dan idem: geen toegang, geen uitgave-inhoud.
  • Als ingelogde gebruiker zonder rol wv-subscriber (incl. pastor en admin) op /uitgaven/ of /uitgaven/{slug}/ dan eveneens geen toegang.
  • Als ingelogde wv-subscriber op /uitgaven/ dan HTTP 200 met 10 uitgavekaarten (nieuwste eerst), elk met cover, uitgavenummer, jaar en dag+maand, en een knop/overlay "Bekijk uitgave" die in een nieuw tabblad opent.
  • Als ingelogde wv-subscriber op /uitgaven/ dan is er paginering en toont /uitgaven/page/2/ de volgende 10 uitgaven.
  • Als ingelogde wv-subscriber op /uitgaven/ dan toont de sidebar "Ingelogd: {voornaam} {achternaam}" en de links Waarheidsvriend digitaal, Mijn account, Wachtwoord wijzigen en Uitloggen; een gebruiker die tevens predikant is ziet ook "Predikant gegevens".
  • Als ingelogde wv-subscriber op /uitgaven/ dan bevat de sidebar een maandarchief waarvan de links de uitgaven van die maand tonen.
  • Als ingelogde wv-subscriber op /uitgaven/{slug}/ dan rendert een fullscreen bladerbare weergave (flipbook) van de uitgave-PDF, zonder site-header/footer.
  • Als anonieme client een directe request doet naar een PDF onder …/uploads/issues/… dan HTTP 403; met geldige login-sessie HTTP 200 (en Range-request → 206).
  • Als wv-subscriber inlogt via de loginpagina dan volgt een redirect naar /uitgaven/.
  • Als ingelogde wv-subscriber via REST/app: GET /gb-app/v1/issues/{id}/pdf-link levert {url, expires_in}; de URL is na 5 minuten ongeldig (gb_app_link_expired); zonder abonnement 403 (gb_app_no_subscription).

Bekende afwijkingen (NIET nabouwen; wel vermelden in het testrapport)

  • De kale WP-403-pagina voor niet-abonnees is een defect in beleving: de views bevatten onbereikbare "U moet ingelogd zijn…"-teksten met registratielink. In Next.js een echte afscherm-/wervingspagina bouwen; het testrapport vermeldt de huidige 403.
  • De PDF-afscherming controleert alleen op het bestaan van een login-cookie, niet op de abonneerol; elke ingelogde gebruiker die de directe bestands-URL kent kan de PDF ophalen. In de rebuild abonnementsgebonden uitlevering gebruiken (zoals de app-flow met ondertekende URL's).
  • Buiten de afgeschermde uitgaven bestaan publieke Real3D-flipbooks op /?r3d={slug} (o.a. /?r3d=de-waarheidsvriend met een openbaar toegankelijke Waarheidsvriend-PDF uit 2021 buiten uploads/issues/, dus buiten de afscherming; ze staan in de sitemap). Saneer- of migratiebesluit nodig; niet zonder meer nabouwen.
  • Uitgaven staan in de Yoast-sitemap (issue-sitemap.xml) terwijl ze achter de 403-gate zitten — zoekmachines krijgen URL's aangeboden die zij niet kunnen renderen.