hydra-sql/src/Controller/MainController.php

58 lines
1.6 KiB
PHP

<?php
namespace App\Controller;
use App\Entity\User;
use App\Hydra\Client;
use App\Hydra\HydraService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Annotation\Route;
class MainController extends AbstractController
{
public HydraService $hydra;
public Client $client;
public SessionInterface $session;
public function __construct(SessionInterface $session, HydraService $hydra, Client $client)
{
$this->session = $session;
$this->client = $client;
$this->hydra = $hydra;
}
/**
* @Route("/", name="app_home")
*/
public function home(Request $request)
{
return $this->hydra->handleLoginRequest($request);
}
/**
* @Route("/connect/login-accept", name="app_login_accept")
*/
public function loginAccept(Request $request)
{
/** @var User */
$user = $this->getUser();
$loginAcceptRes = $this->client->acceptLoginRequest($this->session->get('challenge'), [
'subject' => $user->getLogin(),
'remember' => true,
])->toArray();
return new RedirectResponse($loginAcceptRes['redirect_to']);
}
/**
* @Route("/connect/consent", name="app_consent")
*/
public function consent(Request $request)
{
return $this->hydra->handleConsentRequest($request);
}
}