Your IP : 216.73.217.79


Current Path : /var/www/v3.cesa.co.za/src/SessionsBundle/Controller/
Upload File :
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;
    }
}