fromme
679a864906
chore: update project dependencies
2026-09-21 10:10:59 +02:00
fromme and Claude Opus 5
f080d05dd6
fix: normalize the login email case
...
The login address was only trimmed, so the casing somebody happened to type at
their very first login was frozen into the user row forever — createOrUpdateLocalUser()
never wrote the address back. Everything downstream re-sends the stored address
rather than the one just authenticated with, which also leaked that casing into the
OAuth2 email claim and the log identities.
Harmless in practice, since BusPro matches an address case-insensitively and so does
the utf8mb4_unicode_ci column, but it left User out of step with the newsletter
entities, which have always normalized.
Fold the case once in authenticate(), which covers the BusPro calls, the lookup and a
new account alike, and write the address back on every login so an account created
before this converges instead of staying frozen. No backfill: a row nobody logs into
again is matched case-insensitively either way.
Co-Authored-By: Claude Opus 5 <[email protected] >
2026-09-21 10:03:06 +02:00
fromme
00637042e2
chore: adjust tests to changed role labels
2026-09-21 10:02:29 +02:00
fromme
fbb3ebb8c1
fix: make bpn response failures diagnosable
2026-09-19 11:51:15 +02:00
fromme
ec83ad598f
feat: identify the authenticated account in the userinfo claims
2026-09-19 10:54:06 +02:00
fromme
2cb4871268
chore: update wording of role labels
2026-09-17 18:18:13 +02:00
fromme
c1415dee41
chore: update project dependencies
2026-09-17 18:14:41 +02:00
fromme
540cd8eeb7
feat: reserve administrative roles for staff email addresses
2026-09-17 18:13:52 +02:00
fromme
725e32daab
feat: gender role label correctly
2026-09-16 15:33:40 +02:00
fromme
160ebef39e
fix: stop offering unbookable services in the booking edit flow
2026-09-16 15:28:07 +02:00
fromme
672fc30d7e
doc: update bpn xml api reference
2026-09-16 15:25:50 +02:00
fromme
ba4f66f117
chore: enable basic auth in staging environment
2026-09-16 15:25:16 +02:00
fromme
12fe4d8e15
feat: offer contact validation flow
2026-09-16 10:40:01 +02:00
fromme
5d7ffd7d58
feat: configurable recipient list for notifications of role nominations
2026-09-16 09:21:04 +02:00
fromme
6a8328a564
fix: cachetool 404 on deploy
2026-09-15 15:42:01 +02:00
fromme
019de4e705
feat: surface stuck booking edits to customer experts
2026-09-15 15:13:47 +02:00
fromme
a1d1fdde14
feat: gate functionality for customer expert users
2026-09-15 15:13:47 +02:00
fromme
1d14f00bb7
feat: additional role 'customer expert'
2026-09-15 15:00:59 +02:00
fromme
042037867b
feat: cli command to repair corrupted booking snapshots
2026-09-15 13:57:41 +02:00
fromme
5f6ff13ce7
chore: cleanup and optimize deployer config
2026-09-15 11:55:51 +02:00
fromme
f08d9a9f40
chore: update project dependencies
2026-09-15 09:16:07 +02:00
fromme
7b49375efa
chore: add deployer config for staging environment
2026-09-14 17:01:52 +02:00
fromme
91522ab32d
fix: anonymize the person ids, not the participant slot ids
2026-09-14 15:37:38 +02:00
fromme
a3e8c737de
fix: key participant status like the participants they belong to
2026-09-14 15:13:21 +02:00
fromme
67c685f6c1
chore: update project dependencies
2026-09-14 15:03:33 +02:00
fromme
7aad54e6f2
fix: keep the booking room assignment when restoring an edit draft
2026-09-14 15:02:04 +02:00
fromme
b41820c39d
feat: email the administrators when a role nomination appears
2026-09-13 12:50:01 +02:00
fromme
fab89dead6
feat: derive ROLE_EMPLOYEE from the account's email domain
2026-09-13 12:49:51 +02:00
fromme
443a3ed248
chore: update deployer config after final migration to new host
2026-09-12 08:22:11 +02:00
fromme
5b133f724d
chore: cgl fixes
2026-09-11 19:37:00 +02:00
fromme
5f8a586385
fix: derive contingent change signal from the sync diff
2026-09-11 19:34:29 +02:00
fromme
e863025fb1
chore: align local dev environment with prod
2026-09-11 19:24:32 +02:00
fromme
91a38faecd
chore: update scheduler notification config
2026-09-11 12:58:09 +02:00
fromme
1d3263373e
feat: update filename formatting of booking confirmation pdf
2026-09-09 08:39:10 +02:00
fromme
f8ff4b82a3
feat: replace custom discount with absolute value in favor of percentage
2026-09-08 17:11:00 +02:00
fromme
d6c2cfaf1c
fix: remove incorrect validation group
2026-09-08 16:25:43 +02:00
fromme
cfe901b9c2
feat: include accommodation bookings in db anonymization
2026-09-08 15:41:28 +02:00
fromme
8443dae5ad
feat: additional custom discount applied to total price
2026-09-08 15:29:00 +02:00
fromme
dea7a3dc97
chore: update wording of maintenance mode message
2026-09-08 13:53:08 +02:00
fromme
9e3be24c51
chore: cleanup obsolete environment variables
2026-09-08 13:02:08 +02:00
fromme
e744ebbe33
chore: update project dependencies
2026-09-08 12:40:25 +02:00
fromme
45ca0d2b46
feat: maintenance mode
2026-09-08 12:35:50 +02:00
fromme
f12561c62b
feat: switch to sftp source for buspro xml data
2026-09-04 11:57:03 +02:00
fromme
976b30ccc0
feat: add cms product code for future use
2026-09-03 17:40:29 +02:00
fromme
198fbfe6a2
chore: prepare switching to sftp source for buspro xml data
2026-09-03 16:23:49 +02:00
fromme
acb719730c
feat: add root config option for sftp connection in flysystem
2026-09-03 10:24:01 +02:00
fromme
0e3d4cbedb
chore: adjust deployer config for new hetzner host
2026-09-03 10:23:40 +02:00
fromme
715fae8e33
chore: add bpn xml api documentation extract for agents
2026-09-02 10:33:47 +02:00
fromme
f595183c05
fix: don't require email address from participants under 16
2026-09-01 15:15:58 +02:00
fromme
98e0cfcf6f
chore: remove obsolete deployer rsync fix
2026-09-01 10:58:39 +02:00