61 lines
1.7 KiB
PHP
61 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Security;
|
|
|
|
use League\OAuth2\Client\Provider\AbstractProvider;
|
|
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
|
|
use League\OAuth2\Client\Token\AccessToken;
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Symfony\Component\Security\Core\User\UserInterface;
|
|
use Symfony\Component\Security\Core\User\UserProviderInterface;
|
|
|
|
class UserProvider extends AbstractProvider implements UserProviderInterface
|
|
{
|
|
public function loadUserByIdentifier($identifier): UserInterface
|
|
{
|
|
return new User();
|
|
}
|
|
|
|
public function refreshUser(UserInterface $user): UserInterface
|
|
{
|
|
return $user;
|
|
}
|
|
|
|
public function supportsClass(string $class): bool
|
|
{
|
|
return User::class === $class || is_subclass_of($class, User::class);
|
|
}
|
|
|
|
public function getBaseAuthorizationUrl(): string
|
|
{
|
|
return 'https://oauth.simonis.lol/application/o/authorize/';
|
|
}
|
|
|
|
public function getBaseAccessTokenUrl(array $params): string
|
|
{
|
|
return 'https://oauth.simonis.lol/application/o/token/';
|
|
}
|
|
|
|
public function getResourceOwnerDetailsUrl(AccessToken $token): string
|
|
{
|
|
return 'https://oauth.simonis.lol/application/o/userinfo/';
|
|
}
|
|
|
|
protected function getDefaultScopes(): array
|
|
{
|
|
return ['profile', 'email', 'openid'];
|
|
}
|
|
|
|
protected function checkResponse(ResponseInterface $response, $data): void
|
|
{
|
|
if (isset($data['error'])) {
|
|
throw new IdentityProviderException($data['error'], $response->getStatusCode(), $response);
|
|
}
|
|
}
|
|
|
|
protected function createResourceOwner(array $response, AccessToken $token)
|
|
{
|
|
dd($response);
|
|
}
|
|
}
|