Viewing File: /usr/local/cpanel/whostmgr/docroot/cgi/ncssl/source/src/Controller/OAuthController.php
<?php
namespace App\Controller;
use App\Entity\User;
use App\Service\OAuth\Provider;
use App\Traits\RouteGeneratorTrait;
use KnpU\OAuth2ClientBundle\Client\ClientRegistry;
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Attribute\CurrentUser;
class OAuthController extends AbstractController
{
use RouteGeneratorTrait;
private const CODE_REQUEST_PARAMETER_NAME = 'code';
#[Route('oauth/connect', name: 'oauth_connect')]
public function connect(ClientRegistry $clientRegistry): RedirectResponse
{
return $clientRegistry
->getClient('namecheap')
->redirect([
'openid', 'profile', 'email', 'offline_access'
]);
}
#[Route('oauth/connectCheck', name: 'oauth_connect_check')]
public function connectCheck(ClientRegistry $clientRegistry, LoggerInterface $logger): RedirectResponse
{
$client = $clientRegistry->getClient('nc_sso');
try {
$userResource = $client->fetchUser();
} catch (IdentityProviderException $exception) {
$logger->error('[IdentityProviderException] OAuth connect check error', ['exception' => $exception]);
}
return $this->redirectToRoute('home');
}
#[Route('oauth/logout', name: 'oauth_logout', methods: ['GET'])]
public function logout(Security $security): RedirectResponse
{
$security->logout(false);
return $this->redirectToRoute('home');
}
#[Route('oauth/callback', name: 'oauth_callback')]
public function callback(Request $request, LoggerInterface $logger, #[CurrentUser] ?User $user, ClientRegistry $clientRegistry): RedirectResponse
{
$client = $clientRegistry->getClient('nc_sso');
try {
$userResource = $client->fetchUser();
} catch (IdentityProviderException $exception) {
$logger->error('[IdentityProviderException] OAuth callback error', ['exception' => $exception->getMessage()]);
$this->redirectToRoute('home');
}
$code = $request->get(static::CODE_REQUEST_PARAMETER_NAME, null);
if (!$code) {
return $this->redirectToRoute('home');
}
$requestRoute = $request->get(Provider::SESSION_REDIRECT_PARAMETER);
if ($requestRoute) {
return $this->redirectToRoute($requestRoute);
}
return $this->redirectToRoute('home');
}
#[Route('oauth/reconnect', name: 'oauth_reconnect')]
public function reconnect(Security $security): RedirectResponse
{
$security->logout(false);
return $this->redirectToRoute('oauth_connect');
}
}
Back to Directory
File Manager