Fix: Expect at least one role returned from API client for user
This commit is contained in:
@@ -59,10 +59,17 @@ class BpnAuthenticator extends AbstractLoginFormAuthenticator implements Authent
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Finale checks and local user loading/creation
|
||||||
|
$user = $this->getOrCreateLocalUser($response, $email, $password);
|
||||||
|
|
||||||
|
if (null === $user) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// Store BPN password in session for later use
|
// Store BPN password in session for later use
|
||||||
$request->getSession()->set('bpn_password', $password);
|
$request->getSession()->set('bpn_password', $password);
|
||||||
|
|
||||||
return $this->getOrCreateLocalUser($response, $email, $password);
|
return $user;
|
||||||
}),
|
}),
|
||||||
[new CsrfTokenBadge('authenticate', $csrfToken)]
|
[new CsrfTokenBadge('authenticate', $csrfToken)]
|
||||||
);
|
);
|
||||||
@@ -91,7 +98,7 @@ class BpnAuthenticator extends AbstractLoginFormAuthenticator implements Authent
|
|||||||
|
|
||||||
private function getOrCreateLocalUser(ProfileResponse $profileResponse, string $email, string $password): ?User
|
private function getOrCreateLocalUser(ProfileResponse $profileResponse, string $email, string $password): ?User
|
||||||
{
|
{
|
||||||
// Fetch CRM attributes, early return in case of an API arror
|
// Fetch CRM attributes, early return in case of an API error
|
||||||
try {
|
try {
|
||||||
/** @var CrmAttributesResponse $crmAttributes */
|
/** @var CrmAttributesResponse $crmAttributes */
|
||||||
$crmAttributes = $this->apiClient->getCrmAttributes($email, $password);
|
$crmAttributes = $this->apiClient->getCrmAttributes($email, $password);
|
||||||
@@ -105,6 +112,11 @@ class BpnAuthenticator extends AbstractLoginFormAuthenticator implements Authent
|
|||||||
->collectRoles($crmAttributes)
|
->collectRoles($crmAttributes)
|
||||||
;
|
;
|
||||||
|
|
||||||
|
// User is expected to have at least one role
|
||||||
|
if (0 === count($roles)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// Determine teamer status from CRM attributes
|
// Determine teamer status from CRM attributes
|
||||||
$isTeamer = $crmAttributes->isTeamer();
|
$isTeamer = $crmAttributes->isTeamer();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user