Menu
Privacyverklaring
Over deze app
Over deze app

Bezoekmoment helpt familie en naasten om bezoekmomenten overzichtelijk te plannen.

De planning is bedoeld als hulpmiddel. De situatie rondom de client kan altijd veranderen. Stem bij twijfel af met de beheerder of contactpersoon.

Vul hier later je eigen tekst, disclaimer, privacyinformatie of contactgegevens in.

MijnBezoekmoment 2.2.26-rev46

Datum: 2026-10-30. Basis: 2.2.26-rev43; bevat alles uit rev43 (Ko-fi-link in de voettekst), rev42 (beveiliging en healthcheck), rev41, rev40 en rev39.

Nieuw

  • **Donatieregel onder blije meldingen aan de beheerder.** Onder de e-mails over een **nieuw bezoekmoment** en een **weer geopend tijdslot** staat nu: "Bent u blij met MijnBezoekmoment? Doneer een klein bedrag". In de HTML-mail is "Doneer een klein bedrag ♡" een link naar https://ko-fi.com/mijnbezoekmomentnl; in de tekstversie staat de link er voluit achter.
  • **Bewust niet** onder de meldingen over een geannuleerde reservering, een gesloten tijdslot, de rustknop, een tijdelijk gepauzeerde planning of een afgesloten planning. In een hospice kunnen die over een moeilijk moment gaan.
  • Ook niet onder de bevestigingsmail voor het e-mailadres, de wachtwoordherstelmails, toegangslinks en feedbackmail.

Over rev44 en rev45

  • rev44 ("Ben je blij…") en rev45 ("Bent u blij…", ook onder annuleringen en gesloten tijdsloten) zijn alleen op staging geweest en nooit op productie; rev46 vervangt ze.

Instellingen

  • Dezelfde `KOFI_URL` als de link in de voettekst (rev43). Leeg (`KOFI_URL=""`) verbergt ook de regel in de mails.

Databasewijzigingen

  • Geen.

Upgrade-opmerkingen

  • Geen herinlog nodig. Terug naar rev43 is veilig.

MijnBezoekmoment 2.2.26-rev43

Datum: 2026-10-30. Basis: 2.2.26-rev42; bevat alles uit rev42 (beveiliging en healthcheck), rev41, rev40 en rev39.

Nieuw

  • **Donatielink in de voettekst.** Onder aan elke pagina staat een klein linkje "♡ Steun MijnBezoekmoment via Ko-fi" (Engels: "Support MijnBezoekmoment on Ko-fi"). Het opent https://ko-fi.com/mijnbezoekmomentnl in een nieuw tabblad.
  • Bewust een gewone link en geen Ko-fi-widget: er wordt geen script of afbeelding van Ko-fi geladen. Bezoekers worden dus niet gevolgd en het beveiligingsbeleid (CSP) blijft ongewijzigd.
  • De versie in de voettekst blijft precies hetzelfde, zodat Platform Beheer de app blijft herkennen.

Instellingen

  • Optioneel `KOFI_URL` in `.env`. Leeg (`KOFI_URL=""`) verbergt de link. Alleen links van de vorm `https://ko-fi.com/<naam>` worden geaccepteerd; iets anders verbergt de link ook.

Let op: twee builds met het nummer rev42

  • Op 30-10 bestond kort een tweede build onder het nummer 2.2.26-rev42: rev41 met alleen de donatielink, zonder de beveiliging uit rev42. Die is alleen op één testomgeving geweest en is teruggezet. rev43 is de eerste versie met allebei; gebruik rev42 niet meer.

Databasewijzigingen

  • Geen.

Upgrade-opmerkingen

  • Geen herinlog nodig. Terug naar rev41 is veilig.

MijnBezoekmoment 2.2.26-rev42

Datum: 2026-10-30. Basis: 2.2.26-rev41; bevat alles uit rev41.

Beveiliging (punten uit de externe audit van rev36)

  • **Excel-export: geen formule-injectie.** Een bezoekersnaam die begint met `=`, `+`, `-`, `@`, een tab of een regeleinde wordt in de Excel-export als tekst opgeslagen en gemarkeerd als "tekst", zodat Excel er geen formule van maakt (ook niet bij bewerken). De zichtbare waarde blijft gelijk.
  • **Geen publieke API-documentatie meer.** `/docs`, `/redoc` en `/openapi.json` geven 404.
  • **Niet in de cache.** Alle pagina's, exports en back-ups krijgen `Cache-Control: no-store`, zodat browsers en tussenliggende proxy's ze niet bewaren. Alleen statische bestanden en het logo mogen nog gecachet worden.
  • **Geen tokens in de log.** In de accesslog (`docker logs`) staan toegangslinks nu als `/toegang/***` en tokens in de URL (`token=…`, zoals bij wachtwoordherstel en adresbevestiging) als `token=***`.

Opgelost

  • **Healthcheck.** Docker meldde een omgeving na een (trage) start tot 15 minuten als "starting". De healthcheck controleert nu tijdens het opstarten elke 5 seconden (maximaal 120 seconden) en daarna elke 2 minuten in plaats van elke 15. Vereist Docker 25 of nieuwer (productie en staging: 29.9.2).

Databasewijzigingen

  • Geen.

Upgrade-opmerkingen

  • Geen herinlog nodig. Terug naar rev41 is veilig.

MijnBezoekmoment 2.2.26-rev41

Datum: 2026-10-28. Basis: 2.2.26-rev40; bevat alles uit rev40 (wachtwoord vergeten voor de beheerder) en rev39.

Opgelost

  • **Mail vanuit de app via poort 465 (SMTPS).** De app maakte altijd een gewone SMTP-verbinding, eventueel met STARTTLS. Gebruikt de centrale mail van het platform poort 465 zonder STARTTLS (directe TLS), dan liep elke mail vast op een time-out. Dat gold voor de herstelmail van rev40, de bevestigingsmail voor het beheerders-e-mailadres, meldingen aan de beheerder en feedbackmail. De app gebruikt nu bij poort 465 zonder STARTTLS een TLS-verbinding vanaf het begin, net als Platform Beheer. Andere instellingen werken zoals voorheen.
  • Gevonden op staging, waar de centrale mail poort 465 gebruikt. Op productie speelt het als de centrale mail daar ook poort 465 zonder STARTTLS gebruikt.

Databasewijzigingen

  • Geen (ten opzichte van rev40; rev40 voegde `admin_password_resets` toe).

Upgrade-opmerkingen

  • Geen herinlog nodig. Terug naar rev39 of rev40 is veilig.

MijnBezoekmoment 2.2.26-rev40

Datum: 2026-10-28. Basis: 2.2.26-rev39; bevat alles uit rev39.

Nieuw: wachtwoord vergeten (beheerder)

  • Op de inlogpagina staat **Wachtwoord vergeten? (alleen voor de beheerder)**.
  • De beheerder vult het e-mailadres in. Alleen als dat het **bevestigde beheerders-e-mailadres** van deze omgeving is, gaat er een herstellink naar dat adres. Het antwoord op het scherm is altijd hetzelfde, zodat niemand kan afleiden welk adres bij de omgeving hoort.
  • De link is **30 minuten geldig en werkt één keer**. Een nieuwe aanvraag maakt eerdere links ongeldig. Alleen openen verbruikt de link niet (mailprogramma's openen links soms vooraf).
  • Het nieuwe wachtwoord moet aan het wachtwoordbeleid voldoen en mag niet gelijk zijn aan het wachtwoord van een andere rol.
  • Na het herstel zijn alle bestaande beheerderssessies afgemeld en krijgt de beheerder een bevestigingsmail ("was u dit niet? neem contact op").
  • Bezoekers, familie en client gebruiken dit niet; zij vragen het wachtwoord of een toegangslink aan de beheerder.

Beveiliging

  • De link in de mail gebruikt uitsluitend de ingestelde `PUBLIC_BASE_URL`, nooit het adres uit het verzoek. Zonder `PUBLIC_BASE_URL` of zonder bevestigd e-mailadres wordt er geen mail verstuurd.
  • In de database staat alleen een hash van de link.
  • Grenzen: maximaal 5 aanvragen per uur per IP-adres; per omgeving maximaal 1 herstelmail per 5 minuten en 5 per 24 uur. Bij het bereiken van de daglimiet volgt één Telegram-waarschuwing. IP-adressen die door te veel foute logins geblokkeerd zijn, kunnen ook geen herstel aanvragen. Na 10 ongeldige herstellinks per uur wordt een IP-adres een uur geweigerd.
  • Botfilter zonder externe CAPTCHA: een verborgen lokveld en een ondertekend laadtijdstip (te snel verstuurd = automatisch verzoek, geen mail).
  • Wordt het beheerders-e-mailadres gewijzigd, dan krijgt het **oude** adres daarvan een melding.

Logging en statistiek

  • Elke aanvraag, elk geslaagd herstel en elke mislukte poging staat in het activiteitenlog (met uitkomst en IP-adres, nooit het e-mailadres of de link).
  • Voor Platform Beheer (vanaf beheer 0.7.3-rev8) worden de gebeurtenissen `password_reset_requested`, `password_reset_completed` en `password_reset_failed` met hun uitkomst vastgelegd in de anonieme gebruiksstatistiek.
  • Logregels van bots zijn begrensd (maximaal 10 per IP en 200 in totaal per uur); verstuurde links en geslaagde herstelacties worden altijd vastgelegd.

Databasewijzigingen

  • Nieuwe tabel `admin_password_resets` (hash, aangemaakt, verloopt, gebruikt). Records ouder dan 30 dagen worden bij het starten opgeruimd. Terug naar rev39 is veilig; rev39 negeert de tabel.

Upgrade-opmerkingen

  • Geen herinlog nodig.
  • Nieuwe, optionele instellingen: `ADMIN_PASSWORD_RESET_TOKEN_MINUTES` (30), `ADMIN_PASSWORD_RESET_IP_LIMIT` (5), `ADMIN_PASSWORD_RESET_MIN_INTERVAL_SECONDS` (300), `ADMIN_PASSWORD_RESET_DAILY_LIMIT` (5), `ADMIN_PASSWORD_RESET_TOKEN_FAIL_LIMIT` (10), `ADMIN_PASSWORD_RESET_FORM_MIN_SECONDS` (3).

MijnBezoekmoment 2.2.26-rev39

Datum: 2026-10-27. Basis: 2.2.26-rev38; bevat alles uit rev38.

Beveiliging

  • **Pillow 12.3.0 → 13.0.0.** Lost 38 bekende kwetsbaarheden op in het verwerken van afbeeldingen (pip-audit).
  • **python-dotenv 1.0.1 → 1.2.4.** Lost 2 bekende kwetsbaarheden op.
  • **Logo's: grens van 25 megapixel.** Een klein bestand kan een enorm beeldvlak beschrijven (een "decompressiebom"), dat pas bij het uitpakken veel geheugen en rekentijd kost. Elk geüpload logo wordt nu eerst gecontroleerd (alleen de header, zonder uitpakken). Te grote of onleesbare bestanden worden geweigerd met een duidelijke melding. Dit geldt met én zonder "rand bijsnijden", en ook voor het logo in een teruggezette back-up.
  • **Rand bijsnijden is begrensd bij grote logo's.** De inhoud wordt gezocht op een verkleinde kopie (maximaal 1 megapixel); de uitsnede zelf gebeurt op het origineel. Gemeten op staging: een logo van 16 megapixel dat bijna helemaal uit inhoud bestaat, liet rev38 binnen 11 seconden vastlopen op het geheugen (grens 1 GB). Rev39 verwerkt hetzelfde logo in ongeveer 2 seconden.

Databasewijzigingen

  • Geen.

Upgrade-opmerkingen

  • Geen herinlog nodig; sessies van rev37/rev38 blijven geldig.
  • Een al opgeslagen logo blijft staan, ook als het groter is dan de nieuwe grens. De controle geldt alleen voor nieuwe uploads en voor het terugzetten van een back-up.

MijnBezoekmoment 2.2.26-rev38

Datum: 2026-10-26. Basis: 2.2.26-rev37; bevat alles uit rev37.

Opgelost

  • Platform Beheer herkende rev37 niet als MijnBezoekmoment-app. De versie in de voettekst stond als losse link, waardoor de herkenningstekst `bezoekmoment-app v…` ontbrak. Gevolg: de platform-check van gratis omgevingen mislukte, en nieuwe gratis omgevingen met rev37 werden na 75 seconden teruggedraaid. De link staat nu om de hele tekst `bezoekmoment-app v2.2.26-rev38` heen.

Databasewijzigingen

  • Geen.

Upgrade-opmerkingen

  • Deployments die al op rev37 draaien, kunnen direct naar rev38. Dat geeft geen extra herinlog: de sessies van rev37 blijven geldig.
  • Komt een deployment van rev36, dan gelden de opmerkingen van rev37: iedereen die met een wachtwoord was ingelogd, logt één keer opnieuw in.

MijnBezoekmoment 2.2.26-rev37

Datum: 2026-10-25

Beveiliging

  • Sessies van wie met een wachtwoord inlogt, vervallen zodra het wachtwoord van die rol wijzigt, ook bij een reset vanuit Platform Beheer. Voorheen bleef een sessie tot 14 dagen geldig.
  • Nieuw op de beheerpagina: **Iedereen afmelden**. Dit meldt alle wachtwoordsessies van alle rollen af; de beheerder zelf blijft ingelogd. QR- en toegangslinks trek je apart in.
  • Ongeldige QR- en toegangslinks en loginpogingen tijdens een blokkade worden per IP-adres begrensd gelogd. Na 10 ongeldige links binnen 15 minuten volgt één samenvattende regel; daarna wordt er tijdelijk niet meer gelogd. Een geblokkeerde loginpoging levert per blokkade één auditregel en één melding op.
  • De grootte van een verzoek wordt nu ook begrensd als `Content-Length` ontbreekt (chunked upload). Een ongeldige `Content-Length` geeft 400 in plaats van een serverfout.

Onderhoud

  • Het archiveren van het auditlog gebeurt nu elke 6 uur en niet alleen bij het opstarten.
  • Gebruiksstatistieken (`usage_events`) ouder dan 400 dagen worden automatisch verwijderd. Dit is in te stellen met `USAGE_EVENTS_RETENTION_DAYS`.

Nieuw

  • Het versienummer in de voettekst linkt naar de release notes (`/release-notes`).

Databasewijzigingen

  • Geen schemawijziging. Er komen nieuwe instellingen `account_session_epoch_<rol>` bij, die pas worden aangemaakt als iemand **Iedereen afmelden** gebruikt.

Upgrade-opmerkingen

  • **Na deze update moet iedereen die met een wachtwoord was ingelogd, één keer opnieuw inloggen.** Oude sessies missen de nieuwe vingerafdruk. Sessies via QR- of toegangslinks blijven werken.
  • Nieuwe, optionele omgevingsvariabelen: `ACCESS_LINK_FAIL_LOG_LIMIT` (10), `ACCESS_LINK_FAIL_WINDOW_SECONDS` (900), `USAGE_EVENTS_RETENTION_DAYS` (400) en `MAINTENANCE_INTERVAL_SECONDS` (21600).
  • Platform Beheer 0.7.3-rev4 of hoger.

MijnBezoekmoment 2.2.26-rev36

Nieuw

  • Duidelijk statusscherm na ingediend verzoek om een gratis omgeving te verwijderen.

Gewijzigd

  • Het scherm meldt nu dat de verwijdering op de achtergrond wordt uitgevoerd, niet ten onrechte dat de omgeving al is verwijderd.

Opgelost

  • Misleidende melding van succesvolle voltooiing terwijl Platform Beheer alleen het verwijderverzoek heeft aangenomen.

Databasewijzigingen

  • Geen.

Compatibiliteit

  • Platform Beheer 0.7.2-rev85 aanbevolen; bestaande deployments behouden gegevens en instellingen.

Upgrade-opmerkingen

  • Update via de bestaande deployment-updateprocedure; maak vooraf een backup. Controleer een testomgeving en laat productie ongemoeid tijdens de proef.
  • De beheerknop wordt alleen zichtbaar bij een geldige platform-delete-koppeling. Controleer de koppeling voor bestaande gratis deployments.

Bezoekmoment 2.2.26-rev35

Nieuw

  • Privacyvriendelijke taalstatistiek: gebruiksevents kunnen de gekozen MijnBezoekmoment-taal (`nl`, `en`, enz.) meenemen zonder browsertaal, IP-adres of persoonsgegevens op te slaan.
  • De interne usage-summary levert per taal het aantal anonieme gebruikers en events aan voor Platform Beheer.

Gewijzigd

  • Relevante login-, QR/link-, reserverings-, bericht- en beheer-events registreren voortaan uitsluitend de gekozen app-taal als veilige metadata.
  • Op de bevestigingspagina na zelfservice-verwijdering staat “We zien u graag nog eens terug.” op een nieuwe regel.

Opgelost

  • De verwijderbevestiging leest rustiger doordat de slotzin niet meer direct achter “MijnBezoekmoment.” staat.

Databasewijzigingen

  • Geen schemawijzigingen. De bestaande `usage_events.metadata`-JSON krijgt optioneel het veld `language`.

Compatibiliteit

  • Rechtstreeks compatibel met 2.2.26-rev34.
  • Bestaande statistiekhistorie blijft behouden; taalstatistieken vullen zich vanaf rev35 geleidelijk.
  • Omgevingen zonder taalmetadata blijven gewoon werken en tonen voor historische periodes mogelijk nog geen taalgebruik.

Upgrade-opmerkingen

  • Kan rechtstreeks over 2.2.26-rev34 worden geïnstalleerd.
  • Geen handmatige databaseactie nodig.
  • Controleer na de upgrade een login in Nederlands en eventueel Engels; daarna kan Platform Beheer rev82 het taalgebruik tonen.

Bezoekmoment 2.2.26-rev34

Nieuw

  • Security-hardening op basis van een nieuwe audit van de actuele rev33-broncode en dependencyversies.

Gewijzigd

  • De Docker-healthcheck draait nu elke **15 minuten** in plaats van elke 30 seconden. De bestaande lichte Python/`urllib`-controle blijft behouden.
  • Nieuwe en gewijzigde accountwachtwoorden gebruiken PBKDF2-HMAC-SHA256 met **600.000 iteraties** in plaats van 260.000. Bestaande hashes blijven geldig doordat het iteratieaantal in de hash is opgeslagen.
  • FastAPI is bijgewerkt naar `0.141.1` en Starlette wordt expliciet vastgezet op `1.5.1`.
  • Jinja2 is bijgewerkt naar `3.1.6`, `python-multipart` naar `0.0.32` en Pillow naar `12.3.0`.

Opgelost

  • De zeer frequente container-healthcheck veroorzaakt niet langer iedere 30 seconden een nieuw Python-proces per deployment.
  • Verouderde web-/uploaddependencies uit rev33 zijn vervangen door actuele, gepatchte versies.
  • Nieuwe deployments krijgen direct een wachtwoordhash met de verhoogde PBKDF2-workfactor.

Databasewijzigingen

  • Geen schemawijzigingen.
  • Bestaande wachtwoordhashes worden niet gedwongen gemigreerd; ze blijven valide en een nieuw/gewijzigd wachtwoord wordt automatisch met 600.000 iteraties opgeslagen.

Compatibiliteit

  • Volledig compatibel met bestaande deployments op v2.2.26-rev33.
  • QR/link-toegang, reserveringen, tijdsloten, database-inhoud, sessies en auditlog blijven ongewijzigd.
  • Platform Beheer kan onafhankelijk worden bijgewerkt naar 0.7.2-rev81.

Upgrade-opmerkingen

  • Kan rechtstreeks over v2.2.26-rev33 worden geïnstalleerd.
  • De image wordt opnieuw gebouwd vanwege dependency-updates.
  • Controleer na installatie dat de container `healthy` wordt; daarna zal Docker de healthcheck met een interval van 15 minuten uitvoeren.
  • Er is geen handmatige databasemigratie nodig.

Bezoekmoment 2.2.26-rev33

Nieuw

  • Geen nieuwe functionaliteit; deze release verfijnt de beheerervaring van de in rev32 toegevoegde QR/link-toegang.

Gewijzigd

  • Meldingen na **QR/link aanmaken**, **verlengen**, **intrekken** en **mail naar mijzelf** worden nu direct in het onderdeel **Toegang delen via QR/link** getoond.
  • Na zo'n actie blijft **Applicatie-instellingen** geopend en springt de pagina terug naar **Toegang delen via QR/link** in plaats van naar de bovenkant van Beheer.
  • De QR-codeweergave gebruikt nu altijd de oorspronkelijke vierkante 1:1-verhouding, ook wanneer de beheerkaart smaller wordt.

Opgelost

  • Opgelost dat na het aanmaken van een QR/link alle ingeklapte beheeronderdelen opnieuw dicht stonden en de beheerder terug naar boven op de pagina kwam.
  • Opgelost dat een QR-code door flexibele kaartbreedtes visueel samengedrukt kon worden.

Databasewijzigingen

  • Geen databasewijzigingen.

Compatibiliteit

  • Volledig compatibel met bestaande deployments op v2.2.26-rev32.
  • Bestaande QR/links, wachtwoorden, sessies, auditlog en gebruiksstatistieken blijven behouden.
  • Geen wijziging nodig aan Platform Beheer 0.7.2-rev77.

Upgrade-opmerkingen

  • Kan rechtstreeks over v2.2.26-rev32 worden geïnstalleerd.
  • Test na installatie één keer **QR/link aanmaken** en controleer dat Beheer op **Toegang delen via QR/link** blijft staan en de QR-code vierkant wordt weergegeven.

Bezoekmoment 2.2.26-rev32

Deelbare toegang via QR-code en unieke link

  • Beheerder kan voor Familie, Normale bezoeker en Cliënt elk maximaal één actieve QR/link aanmaken.
  • Bestaande wachtwoordlogin blijft volledig intact en wordt apart gemeten.
  • QR/link is zichtbaar in Beheer, native deelbaar, kopieerbaar, als QR-PNG te downloaden en uitsluitend naar het reeds bevestigde beheerder-e-mailadres te mailen.
  • Intrekken maakt de link direct ongeldig en beëindigt ook sessies die via die link zijn gestart; het gewone wachtwoord blijft werken.
  • Per link zijn gebruiksteller, laatste gebruik en duidelijke vervaldatum zichtbaar.
  • Verlengen behoudt dezelfde QR/link en schuift de vervaldatum op volgens de platformpolicy.
  • Automatische eenvoudige herinneringsmail 7 en 2 dagen voor verlopen.
  • Aanmaken, intrekken, verlengen en herinneringen worden in de auditlog vastgelegd zonder de geheime link/token te loggen.
  • Privacyvriendelijke analytics onderscheiden wachtwoordlogin en QR/link-login zodat het effect op foutieve logins meetbaar is.
  • Access-links worden meegenomen in de normale JSON-backup/restore.

Bezoekmoment 2.2.26-rev31

Omgevingsprofiel neutraler weergegeven

  • De profielkaart toont alleen het actieve profiel.
  • De zichtbare aanduiding `vergrendeld` is verwijderd uit de beheerinstellingen.
  • De toelichting is verkort naar: **Gekozen bij het aanmaken van de omgeving.**
  • Geen wijzigingen aan profielgedrag, planning, reserveringen, databaseopbouw of bestaande Hospice-functionaliteit.

Bezoekmoment 2.2.26-rev30

Omgevingsprofiel duidelijk zichtbaar

  • Het actieve omgevingsprofiel heeft nu een eigen kaart in de beheerinstellingen.
  • De kaart toont het profiel en de vergrendelde status direct, zodat het niet meer verstopt zit in het blok Locatie/deployment.
  • Geen wijzigingen aan profielgedrag, planning, reserveringen, databaseopbouw of bestaande Hospice-functionaliteit.

Terug