| Current Path : /var/www/v3.cesa.co.za/src/SessionsBundle/Controller/ |
| Current File : /var/www/v3.cesa.co.za/src/SessionsBundle/Controller/DefaultController.php |
<?php
namespace App\SessionsBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use App\CoreBundle\Services\ServiceGetterManager;
/**
* Sessions default controller
*
* @author Otto Saayman <otto@igotafrica.com>
* @package SessionsBundle
* @subpackage Controller
* @version 0.0.1
*/
class DefaultController extends AbstractController {
public function indexAction(Request $request, ServiceGetterManager $sg, $name) {
return $this->render('SessionsBundle:Default:index.html.twig', array('name' => $name));
}
/**
* Logging users in
*
* @return Response
*/
public function loginAction(Request $request, ServiceGetterManager $sg, AuthenticationUtils $authenticationUtils) {
$session = $request->getSession();
$systemSettingsManager = $sg->get('system_setting.manager');
// get the login error if there is one
if ($request->attributes->has(Security::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(Security::AUTHENTICATION_ERROR);
} else {
$error = $session->get(Security::AUTHENTICATION_ERROR);
$session->remove(Security::AUTHENTICATION_ERROR);
}
if (strlen($request->get('token_verify_e_mail')) > 0) {
if ($this->container->get('user_list.manager')->verifyEMail($request->get('token_verify_e_mail'))) {
$this->get('session')->getFlashBag()->add('success', $this->container->get('language_phrases.manager')->translate('Thank you for verifying your e-mail address. You may now log in.'));
} else {
$this->get('session')->getFlashBag()->add('success', $this->container->get('language_phrases.manager')->translate('Could not verify your e-mail address. Please ocntact us for assistance.'));
}
}
$titleString = 'Log in';
$descriptionString = 'Log in to this system';
$keyWordString = 'log in';
$loginTemplate = $systemSettingsManager->getSetting('login_template', '@SessionsBundle/Default/login.html.twig');
return $this->render($loginTemplate, array(
'last_username' => $session->get(Security::LAST_USERNAME),
'error' => $error,
'titleString' => $titleString,
'pageTitleString' => $titleString,
'descriptionString' => $descriptionString,
'keyWordString' => $keyWordString,
));
}
/**
* Change user language
*
* @return Response
*/
public function setLanguageAction(Request $request, ServiceGetterManager $sg, $cultureString) {
try {
$languageManager = $sg->get('languages.manager');
$language = $languageManager->findByCultureString($cultureString);
if (!is_object($language)) {
$languagePhrasesManager = $sg->get('language_phrases.manager');
throw new \Exception($languagePhrasesManager->translate('No such language'));
}
$sessionValuesManager = $sg->get('session_values.manager');
$sessionValuesManager->setValue(array('value_name' => 'language_id', 'value' => $language->getId()));
return $this->redirect($this->generateUrl('iga_core_homepage', array('cultureString' => $cultureString)));
} catch (\Exception $ex) {
$logger = $this->get('error_log.manager');
$logger->error('Error on language switch: ' . $ex->getMessage());
return $this->redirect($this->generateUrl('iga_core_500', array('message' => $ex->getMessage())));
}
}
/**
* Check single session per device
*
* @return Response
*/
public function checkSingle(Request $request, ServiceGetterManager $sg) {
$errorLogManager = $sg->get('error_log.manager');
$languagePhrasesManager = $sg->get('language_phrases.manager');
$sessionManager = $sg->get('sessions.manager');
$responseData = array('success' => true, 'message' => '');
try {
$responseData = $sessionManager->checkOtherSession();
} catch (\Exception $ex) {
$logger = $sg->get('error_log.manager');
$logger->error('Error on check single sign on per device per user: ' . $ex->getMessage() . ' - ' . $ex->getTraceAsString());
$responseData['success'] = false;
$responseData['message'] = $errorLogManager->getMessage($languagePhrasesManager->translate('Unable to check other logins') . ': ' . $ex->getMessage(), 'danger');
}
$response = new Response(json_encode($responseData));
$response->headers->set('X-robots-tag', 'noindex');
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}