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
540cd8eeb7
feat: reserve administrative roles for staff email addresses
2026-09-17 18:13:52 +02:00
fromme
160ebef39e
fix: stop offering unbookable services in the booking edit flow
2026-09-16 15:28:07 +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
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
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
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
5f8a586385
fix: derive contingent change signal from the sync diff
2026-09-11 19:34:29 +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
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
f595183c05
fix: don't require email address from participants under 16
2026-09-01 15:15:58 +02:00
Björn Fromme
e14d29f7d4
fix: restore room occupancy lost to case-sensitive xml attribute lookup
2026-08-31 14:15:21 +02:00
Björn Fromme
81b724c11a
fix: false draft-restored message
2026-08-31 09:31:00 +02:00
Björn Fromme
bfad61f1dd
feat: upgrade phpunit to 12.5
2026-08-31 09:31:00 +02:00
Björn Fromme
010cfe56b2
feat: upgrade project to symfony 7.4
2026-08-31 09:03:44 +02:00
Björn Fromme
80d734e7d6
feat: derive calendar date range from price configurations
2026-08-26 13:32:25 +02:00
Björn Fromme
4e6aaba9ff
feat: admin dashboard widgets
2026-08-25 16:31:45 +02:00
Björn Fromme
578a21d327
fix: stop mutating booking state on edit-mode page views
2026-08-24 17:13:19 +02:00
Björn Fromme
c9c28792e5
fix: resolve stale dependent selections after booking family insurance
2026-08-24 16:58:09 +02:00
Björn Fromme
35826088cb
feat: relax filtering constraints for non-admin groups price users
2026-08-24 14:32:45 +02:00
Björn Fromme
48db290625
feat: manually create customer access link for offer and update status
...
addresses #869eea8d7
2026-08-24 09:19:16 +02:00
Björn Fromme
7c5f6dd5ef
feat: create ClickUp task after confirming accommodation booking
2026-08-20 17:56:29 +02:00
Björn Fromme
0a1683667f
feat: explicit icon map for hotel cms-data response
2026-08-20 14:45:05 +02:00
Björn Fromme
ef439f6faf
feat: re-generate access links for bookings when sent via email
2026-08-20 14:21:02 +02:00
Björn Fromme
98a303e941
feat: delete accommodation bookings in draft
2026-08-20 12:39:45 +02:00
Björn Fromme
3db1850e4f
feat: edit selected accommodation of bookings in draft
2026-08-20 12:34:44 +02:00
Björn Fromme
351fbab498
feat: improved contingents api performance with db backed snapshots
2026-08-20 11:46:03 +02:00
Björn Fromme
d5f9f4ef10
chore: adopt namespace pattern for accommodation booking controllers
2026-08-19 17:07:57 +02:00
Björn Fromme
8617bf6c86
fix: prevent generating offer links while booking is in draft
2026-08-19 13:00:43 +02:00
Björn Fromme
2601e46ec4
fix: never persist a half-built user on first login
2026-08-19 12:30:42 +02:00
Björn Fromme
0c667d6b69
feat: align role assignment logic with myep-team
2026-08-19 12:14:09 +02:00
Björn Fromme
5a3957e143
feat: refactored accommodation booking status model
2026-08-19 11:46:52 +02:00
Björn Fromme
2d7a02341d
feat: booking details pdf
2026-08-18 14:26:24 +02:00
Björn Fromme
d3666c4618
fix: skip discounts with value 0€
2026-08-18 13:07:31 +02:00
Björn Fromme
ef24c9a616
fix: streamlined discount display in all breakdowns
2026-08-18 13:04:33 +02:00
Björn Fromme
8dee65d0dc
feat: additional confirmation cycle and status for groups inquiries
2026-08-18 12:48:17 +02:00
Björn Fromme
b5f1163e2d
fix: handle access denied errors properly
2026-08-17 16:29:58 +02:00
Björn Fromme
a5d97f1206
feat: enable entering additional remarks in offer confirmation
2026-08-17 15:30:17 +02:00
Björn Fromme
d74127ebe2
fix: drop the implicit ROLE_USER from the userinfo roles claim
2026-08-12 17:47:44 +02:00