# Inspreekrecht aanmelden activeren

Een inwoner heeft geen account nodig. De API accepteert buiten Development alleen
openbare aanmeldingen als Cloudflare Turnstile met een site key én secret key is
geconfigureerd. Ontbrekende sleutels blijven een blokkerende fout; de beveiliging
wordt niet overgeslagen.

## Ansible

Stel `vault_captcha_site_key` en `vault_captcha_secret_key` in het versleutelde
Ansible-vaultbestand in. De variabelen `captcha_site_key` en `captcha_secret_key`
in de inventory kunnen deze waarden overschrijven. De deploy-template schrijft
ze naar `CAPTCHA_SITE_KEY` en `CAPTCHA_SECRET_KEY` in het gegenereerde `.env`-bestand.
Compose geeft ze uitsluitend aan de RIS API door.

Gebruik echte Turnstile-sleutels voor de frontend-hostnaam. Zet geen secret key in
Vite-variabelen, broncode of browserconfiguratie. Test keys zijn niet geschikt voor
een publieke installatie. Deploy opnieuw en laat Compose de API-container opnieuw
aanmaken wanneer de omgeving is gewijzigd.

## Controle na deployment

`GET /api/speaking-slots/config` hoort `captchaRequired: true` en
`submissionEnabled: true` te geven, met alleen de publieke site key. Controleer
anoniem een toekomstige openbare vergadering: vul het formulier in, voltooi de
controle en meld aan via de rechterknop onderaan. De sluitknop staat daarnaast.
Een ontbrekend of ongeldig captcha-token moet door de API geweigerd blijven.

Na een tijdelijke fout bij het ophalen van de instellingen kan de inwoner
**Opnieuw proberen** gebruiken zonder de ingevoerde gegevens kwijt te raken.
Ontbreken de deployment-sleutels nog, dan blijft aanmelden geblokkeerd en wordt
verwezen naar de griffie. Een code-deployment alleen kan geen echte sleutels aanmaken.
