<?php
namespace App\ControllerSessionManager;
use App\Exception\NeedRedirectionException;
use App\Service\GestionLanguages;
use App\Service\InfoForLoginSIMAX;
use NOUT\Bundle\NOUTOnlineBundle\Service\DynamicConfigurationLoader;
use NOUT\Bundle\NOUTOnlineBundle\Service\NOUTClient;
use NOUT\Bundle\NOUTOnlineBundle\Service\NOUTClientIHM;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
class DefaultController extends AbstractController
{
/**
* Route de génération du formulaire de connexion
* Comme c'est pour l'identification, on n'utilise pas de formBuilder, uniquement un template twig avec le formulaire dedans
*
* @Route("/login/",
* name="login",
* options={"expose"=true}
* )
*/
public function loginAction(Request $request, DynamicConfigurationLoader $dynamicConfiguration, InfoForLoginSIMAX $infoForLoginSIMAX, GestionLanguages $gestionLanguages)
{
try {
$aParamTwig = $this->_aGetCommonParamForTwig($request, $dynamicConfiguration, $infoForLoginSIMAX, $gestionLanguages);
}
catch (NeedRedirectionException $e)
{
//le message de l'exception contient le lien de redirection
return $this->redirect($e->getMessage());
}
$logoutFrom = $request->getSession()->get('logout_from', false);
return $this->render('WebSite/Security/login.html.twig', [
// last username entered by the user
'check_route_name' => 'session_check_login',
'sso' => $this->getParameter('site.sso'),
'logout_from' => $logoutFrom,
]+$aParamTwig);
}
/**
* Route de génération du formulaire de connexion
* Comme c'est pour l'identification, on n'utilise pas de formBuilder, uniquement un template twig avec le formulaire dedans
*
* @Route("/anonyme/",
* name="anonyme",
* options={"expose"=true}
* )
*/
public function anonymeAction(Request $request, AuthenticationUtils $authenticationUtils)
{
$error = $authenticationUtils->getLastAuthenticationError();
return $this->render('WebSite/Security/anonyme.html.twig', array(
// last username entered by the user
'error' => $error,
'extranet' => true,
'customization' => $this->getParameter('custom.login'),
'display_version' => $this->getParameter('site.display')["version"],
'is_simaxstarter' => $this->getParameter('site.config')['simaxstarter'],
));
}
/**
* Route de génération du formulaire de connexion
*
* @Route("/",
* name="session_index"
* )
*/
public function indexAction()
{
return $this->forward('App\ControllerSessionManager\DefaultController::login');
}
/**
* Route de génération du formulaire de connexion
* Comme c'est pour l'identification, on n'utilise pas de formBuilder, uniquement un template twig avec le formulaire dedans
*
* @Route("/user_info",
* name="user_info",
* options={"expose"=true}
* )
*/
public function userInfoAction(Request $request, NOUTClient $client, GestionLanguages $clGestionLangage)
{
$login = $request->get('login');
try {
$clIntraExists = $client->clUserExists($login);
$oRet = new \stdClass();
$oRet->with_configuration = $clIntraExists->bWithConfiguration;
$oRet->language_code = $clIntraExists->nCodeLangue;
return new JsonResponse($oRet);
}
catch (\Exception $e)
{
return new JsonResponse(new \stdClass());
}
}
/**
* Route de génération du formulaire de connexion
* Comme c'est pour l'identification, on n'utilise pas de formBuilder, uniquement un template twig avec le formulaire dedans
*
* @Route("/execute/{idaction}",
* name="execute_action",
* requirements={"idaction" = "\d+"},
* options={"expose"=true}
* )
*/
public function executeAction(Request $request, NOUTClientIHM $client)
{
try {
$retAction = $client->oExecuteWithoutIHM([
'ID' => $request->get('idaction'),
]);
}
catch (\Exception $e) {
return new JsonResponse(array('message' => $e->getMessage()), 500);
}
if ($retAction->bIsFault()){
return new JsonResponse(array('message' => $retAction->getMessError()), 500);
}
return new JsonResponse(array('message' => $retAction->sGetReport()));
}
}