Skip to content

Commit 3c8f1d0

Browse files
committed
SSO: Add new user to access url after OAuth2 process - refs BT#21881
1 parent 9c92565 commit 3c8f1d0

File tree

4 files changed

+27
-5
lines changed

4 files changed

+27
-5
lines changed

src/CoreBundle/Security/Authenticator/OAuth2/AbstractAuthenticator.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
use Chamilo\CoreBundle\Entity\User;
1010
use Chamilo\CoreBundle\Repository\Node\UserRepository;
11+
use Chamilo\CoreBundle\ServiceHelper\AccessUrlHelper;
1112
use Chamilo\CoreBundle\ServiceHelper\AuthenticationConfigHelper;
1213
use KnpU\OAuth2ClientBundle\Client\ClientRegistry;
1314
use KnpU\OAuth2ClientBundle\Client\OAuth2ClientInterface;
@@ -35,6 +36,7 @@ public function __construct(
3536
protected readonly RouterInterface $router,
3637
protected readonly UserRepository $userRepository,
3738
protected readonly AuthenticationConfigHelper $authenticationConfigHelper,
39+
protected readonly AccessUrlHelper $urlHelper,
3840
) {
3941
$this->client = $this->clientRegistry->getClient($this->providerName);
4042
}
@@ -76,5 +78,8 @@ public function onAuthenticationFailure(Request $request, AuthenticationExceptio
7678
return new Response($message, Response::HTTP_FORBIDDEN);
7779
}
7880

81+
/**
82+
* Find or create and save the new user.
83+
*/
7984
abstract protected function userLoader(AccessToken $accessToken): User;
8085
}

src/CoreBundle/Security/Authenticator/OAuth2/FacebookAuthenticator.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
use Chamilo\CoreBundle\Entity\User;
1010
use Chamilo\CoreBundle\Repository\Node\UserRepository;
11+
use Chamilo\CoreBundle\ServiceHelper\AccessUrlHelper;
1112
use Chamilo\CoreBundle\ServiceHelper\AuthenticationConfigHelper;
1213
use Cocur\Slugify\SlugifyInterface;
1314
use KnpU\OAuth2ClientBundle\Client\ClientRegistry;
@@ -25,9 +26,16 @@ public function __construct(
2526
RouterInterface $router,
2627
UserRepository $userRepository,
2728
AuthenticationConfigHelper $authenticationConfigHelper,
29+
AccessUrlHelper $urlHelper,
2830
protected readonly SlugifyInterface $slugify,
2931
) {
30-
parent::__construct($clientRegistry, $router, $userRepository, $authenticationConfigHelper);
32+
parent::__construct(
33+
$clientRegistry,
34+
$router,
35+
$userRepository,
36+
$authenticationConfigHelper,
37+
$urlHelper,
38+
);
3139
}
3240

3341
public function supports(Request $request): ?bool
@@ -61,7 +69,9 @@ protected function userLoader(AccessToken $accessToken): User
6169
;
6270

6371
$this->userRepository->updateUser($user);
64-
// updateAccessUrls ?
72+
73+
$url = $this->urlHelper->getCurrent();
74+
$url->addUser($user);
6575

6676
return $user;
6777
}

src/CoreBundle/Security/Authenticator/OAuth2/GenericAuthenticator.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Chamilo\CoreBundle\Repository\ExtraFieldRepository;
1111
use Chamilo\CoreBundle\Repository\ExtraFieldValuesRepository;
1212
use Chamilo\CoreBundle\Repository\Node\UserRepository;
13+
use Chamilo\CoreBundle\ServiceHelper\AccessUrlHelper;
1314
use Chamilo\CoreBundle\ServiceHelper\AuthenticationConfigHelper;
1415
use ExtraField;
1516
use KnpU\OAuth2ClientBundle\Client\ClientRegistry;
@@ -34,14 +35,16 @@ public function __construct(
3435
RouterInterface $router,
3536
UserRepository $userRepository,
3637
AuthenticationConfigHelper $authenticationConfigHelper,
38+
AccessUrlHelper $urlHelper,
3739
protected readonly ExtraFieldRepository $extraFieldRepository,
3840
protected readonly ExtraFieldValuesRepository $extraFieldValuesRepository,
3941
) {
4042
parent::__construct(
4143
$clientRegistry,
4244
$router,
4345
$userRepository,
44-
$authenticationConfigHelper
46+
$authenticationConfigHelper,
47+
$urlHelper,
4548
);
4649
}
4750

@@ -161,7 +164,9 @@ public function saveUserInfo(User $user, array $resourceOwnerData, array $provid
161164
;
162165

163166
$this->userRepository->updateUser($user);
164-
// updateAccessUrls ?
167+
168+
$url = $this->urlHelper->getCurrent();
169+
$url->addUser($user);
165170
}
166171

167172
private function getUserStatus(array $resourceOwnerData, int $defaultStatus, array $providerParams): int

src/CoreBundle/Security/Authenticator/OAuth2/KeycloakAuthenticator.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ protected function userLoader(AccessToken $accessToken): User
4949
;
5050

5151
$this->userRepository->updateUser($user);
52-
// updateAccessUrls ?
52+
53+
$url = $this->urlHelper->getCurrent();
54+
$url->addUser($user);
5355

5456
return $user;
5557
}

0 commit comments

Comments
 (0)