Skip to content

Commit ab26212

Browse files
committed
Merge pull request #277 from petergallagher/master
Add pre auth checks to authentication.
2 parents 18eac30 + 40c4010 commit ab26212

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

Security/Authentication/Provider/OAuthProvider.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class OAuthProvider implements AuthenticationProviderInterface
4747
/**
4848
* @param \Symfony\Component\Security\Core\User\UserProviderInterface $userProvider The user provider.
4949
* @param \OAuth2\OAuth2 $serverService The OAuth2 server service.
50+
* @param \Symfony\Component\Security\Core\User\UserCheckerInterface $userChecker The Symfony User Checker for Pre and Post auth checks
5051
*/
5152
public function __construct(UserProviderInterface $userProvider, OAuth2 $serverService, UserCheckerInterface $userChecker)
5253
{
@@ -71,6 +72,22 @@ public function authenticate(TokenInterface $token)
7172
$scope = $accessToken->getScope();
7273
$user = $accessToken->getUser();
7374

75+
if (null !== $user) {
76+
77+
try {
78+
$this->userChecker->checkPreAuth($user);
79+
} catch (AccountStatusException $e) {
80+
throw new OAuth2AuthenticateException(OAuth2::HTTP_UNAUTHORIZED,
81+
OAuth2::TOKEN_TYPE_BEARER,
82+
$this->serverService->getVariable(OAuth2::CONFIG_WWW_REALM),
83+
'access_denied',
84+
$e->getMessage()
85+
);
86+
}
87+
88+
$token->setUser($user);
89+
}
90+
7491
$roles = (null !== $user) ? $user->getRoles() : array();
7592

7693
if (!empty($scope)) {

0 commit comments

Comments
 (0)