feat: improved handling of roles determination from bpn api response

This commit is contained in:
Björn Fromme
2026-03-15 12:42:28 +01:00
parent c96e1e6f61
commit f437e03374
2 changed files with 18 additions and 0 deletions
+7
View File
@@ -118,6 +118,13 @@ class BpnAuthenticator extends AbstractLoginFormAuthenticator implements Authent
// User is expected to have at least one role
if (0 === count($roles)) {
// Revoke roles on existing local user to invalidate any active session
$existingUser = $this->userDataHandler->findLocalUser($profileResponse);
if (null !== $existingUser) {
$existingUser->setRoles([]);
$this->entityManager->flush();
}
return null;
}
+11
View File
@@ -9,6 +9,13 @@ use Symfony\Component\Security\Core\User\UserInterface;
class UserChecker implements UserCheckerInterface
{
private const APPLICATION_ROLES = [
'ROLE_ADMIN',
'ROLE_MANAGER',
'ROLE_HOUSE_MANAGER',
'ROLE_TEAMER',
];
public function checkPreAuth(UserInterface $user): void
{
if (!$user instanceof User) {
@@ -18,6 +25,10 @@ class UserChecker implements UserCheckerInterface
if (true === $user->isDisabled()) {
throw new CustomUserMessageAccountStatusException('Dein Account wurde gesperrt: '.$user->getDisabledReason());
}
if ([] === array_intersect($user->getRoles(), self::APPLICATION_ROLES)) {
throw new CustomUserMessageAccountStatusException('Keine gültige Rolle zugewiesen.');
}
}
public function checkPostAuth(UserInterface $user): void