Commit Graph
39 Commits
Author SHA1 Message Date
fromme b755a6f43e refactor: split buspro ApiClient into domain clients 2026-10-02 13:55:30 +02:00
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 2cb4871268 chore: update wording of role labels 2026-09-17 18:18:13 +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 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 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 010cfe56b2 feat: upgrade project to symfony 7.4 2026-08-31 09:03:44 +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 d74127ebe2 fix: drop the implicit ROLE_USER from the userinfo roles claim 2026-08-12 17:47:44 +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 9d2aa11fdb feat: groups price calculator admin crud, booking/offer flow and api 2026-08-03 15:25:10 +02:00
Björn Fromme fce6d1615a chore: cleanup, add PHPStan type annotations 2026-04-03 13:45:41 +02:00
Björn Fromme 6d9265de0f fix: restore unintended file changes after master flatten rewrite 2026-03-16 14:15:51 +01: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 0e49a5cf99 fix: take voter attribute into account 2025-04-24 20:58:05 +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
Björn Fromme fb6665668b feat: encrypted user passwords 2025-04-24 12:26:42 +02:00
Björn Fromme 231aaaac9b feat: api endpoints 2024-12-04 14:18:47 +01:00
Björn Fromme d4c4e69d09 wip: initial commit 2024-11-20 18:32:09 +01:00