Commit Graph
25 Commits
Author SHA1 Message Date
frommeandClaude 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 540cd8eeb7 feat: reserve administrative roles for staff email addresses 2026-09-17 18:13:52 +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
Björn Fromme 1796ec4964 chore: update wording of inline comments 2026-08-24 09:19:32 +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 e8143c055b fix: always redirect to account page first on login 2026-08-17 16:38:35 +02:00
Björn Fromme b5f1163e2d fix: handle access denied errors properly 2026-08-17 16:29:58 +02:00
Björn Fromme 77de1643f0 feat: import users` real names from bpn API 2026-08-17 14:24:56 +02:00
Björn Fromme 7a82127494 feat: sync non-privileged BusPro roles on every login 2026-08-12 17:47:15 +02:00
Björn Fromme 6c1073e41c feat: admin-managed roles and hotel codes 2026-08-10 10:07:24 +02:00
Björn Fromme 21a3e8fafc feat: user-friendly error messages on login 2026-03-16 12:02:59 +01:00
Björn Fromme c582e0820a feat: move profile completeness check from login to booking flow entry
- Add profileComplete flag to User entity to avoid API calls
- Set flag during login (BpnAuthenticator) and profile save
- Check flag in IndexController when entering booking flow
- Remove ProfileCompletionSubscriber (no longer needed)

Users with incomplete profiles are only redirected when starting
a new booking, not on every login. Eliminates extra API call by
caching completeness status on the user entity.
2026-03-16 12:02:59 +01:00
Björn Fromme 9b88a2c14d feat: custom hx redirect class 2026-03-16 12:02:27 +01:00
Björn Fromme ea1ce4a029 docs: add inline documentation where missing 2026-03-16 12:01:09 +01:00
Björn Fromme 65f8436aa7 feat: extended oauth2 user info and refactored authenticator 2026-03-16 12:00:56 +01:00
Björn Fromme d1e807b11f feat: adjust oauth2 implementation for TYPO3 backend login 2026-03-16 12:00:56 +01:00
Björn Fromme 4a2d1f4a02 feat: implement screendesign 2026-03-16 11:59:12 +01:00
Björn Fromme 37924841e1 feat: improved timeout handling for api client 2026-03-16 11:59:11 +01:00
Björn Fromme be90248fc7 feat: remove 'remember me' functionality from login form in booking process 2026-03-16 11:59:11 +01:00
Björn Fromme c37309b3c1 feat: improved handling and logging of access denied errors 2025-04-28 11:10:35 +02:00
Björn Fromme d9ab2a6e1f fix: always update encrypted password
This avoids issues with changed passwords or encryption keys
2025-04-25 08:15:45 +02:00
Björn Fromme adbfb49c11 feat: integrated OAuth2 server 2025-04-24 20:28:27 +02:00
Björn Fromme c418ae6399 feat: minimal locally stored user entity 2025-04-24 17:09:05 +02:00