What's My Attendance?
WMA Ops Console
Admin console
Operations
Schools
No schools loaded.
| School | Onboarding | Sync | Latest data | Staff |
|---|
No schools match the current filters.
Select a school
The operational record will open here.
Trial Schools
WMA Trial School
Loading trial access...
| Slot | School | Contact | Activity | Actions |
|---|
No trial access assigned yet.
Security & Access
Password setup and Turnstile
Operational notes for staff setup emails, password resets, and the Cloudflare Turnstile protection now active on the admin and school reset flows.
Setup/reset email requests must pass the Cloudflare security check before the API sends an email.
Old links can still open the page, but they cannot be used after expiry or completion.
When adding school staff
- Create the staff account from the selected school's Staff tab.
- Keep Send setup email ticked for new accounts.
- Tell the member of staff to check inbox and junk/spam.
- If the link expires, use Resend setup from the Staff tab.
When a user requests their own link
- User opens the Admin Console or School Console sign-in page.
- User enters their email and selects Set or reset password.
- The page redirects to the reset page and pre-fills their email.
- User completes Turnstile, then requests a fresh setup email.
What Turnstile protects
- Self-service setup/reset email requests on the public School Console.
- WMA admin and school staff reset requests made from the reset page.
- Automated/bot attempts to trigger repeated email sends.
What to check if a reset fails
- Use the newest email only; older links may have expired or been superseded.
- Confirm the account exists in Firebase Auth and is linked in portalUsers.
- For normal schools, confirm an active school membership exists.
- For WMA admin, confirm globalRole is wma_admin or canViewWmaAdmin is true.
Current production configuration
- Cloudflare widget hostname
- admin.whatsmyattendance.com and schools.whatsmyattendance.com
- Frontend site key locations
- admin-portal/config.js and school-portal/config.js
- Secret storage
- Google Secret Manager → wma-turnstile-secret-key
- Cloud Run env
- TURNSTILE_REQUIRED=true, TURNSTILE_EXPECTED_HOSTNAMES=admin.whatsmyattendance.com,schools.whatsmyattendance.com
Do not paste the Turnstile secret into frontend files or school-facing documents. Rotate the secret in Cloudflare if it is ever exposed.