protected function compile()
	{
		$container = System::getContainer();

		/** @var RouterInterface $router */
		$router = $container->get('router');

		if ($container->get('contao.security.token_checker')->hasFrontendUser())
		{
			/** @var PageModel $objPage */
			global $objPage;

			$this->import(FrontendUser::class, 'User');

			$strRedirect = Environment::get('base').Environment::get('request');

			// Redirect to last page visited
			if ($this->redirectBack && $_SESSION['LAST_PAGE_VISITED'] != '')
			{
				$strRedirect = Environment::get('base').$_SESSION['LAST_PAGE_VISITED'];
			}

			// Redirect home if the page is protected
			elseif ($objPage->protected)
			{
				$strRedirect = Environment::get('base');
			}

			$this->Template->logout = true;
			$this->Template->formId = 'tl_logout_' . $this->id;
			$this->Template->slabel = StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['logout']);
			$this->Template->loggedInAs = sprintf($GLOBALS['TL_LANG']['MSC']['loggedInAs'], $this->User->username);
			$this->Template->action = $container->get('security.logout_url_generator')->getLogoutPath();
			$this->Template->targetPath = StringUtil::specialchars($strRedirect);

			if ($this->User->lastLogin > 0)
			{
				$this->Template->lastLogin = sprintf($GLOBALS['TL_LANG']['MSC']['lastLogin'][1], Date::parse($objPage->datimFormat, $this->User->lastLogin));
			}

			return;
		}

		$exception = $container->get('security.authentication_utils')->getLastAuthenticationError();

		if ($exception instanceof LockedException)
		{
			$this->Template->hasError = true;
			$this->Template->message = sprintf($GLOBALS['TL_LANG']['ERR']['accountLocked'], $exception->getLockedMinutes());
		}
		elseif ($exception instanceof AuthenticationException)
		{
			$this->Template->hasError = true;
			$this->Template->message = $GLOBALS['TL_LANG']['ERR']['invalidLogin'];
		}

		$blnRedirectBack = false;
		$strRedirect = Environment::get('base').Environment::get('request');

		// Redirect to the last page visited
		if ($this->redirectBack && $_SESSION['LAST_PAGE_VISITED'] != '')
		{
			$blnRedirectBack = true;
			$strRedirect = $_SESSION['LAST_PAGE_VISITED'];
		}

		// Redirect to the jumpTo page
		elseif (($objTarget = $this->objModel->getRelated('jumpTo')) instanceof PageModel)
		{
			/** @var PageModel $objTarget */
			$strRedirect = $objTarget->getAbsoluteUrl();
		}

		$this->Template->username = $GLOBALS['TL_LANG']['MSC']['username'];
		$this->Template->password = $GLOBALS['TL_LANG']['MSC']['password'][0];
		$this->Template->action = $router->generate('contao_frontend_login');
		$this->Template->slabel = StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['login']);
		$this->Template->value = StringUtil::specialchars($container->get('security.authentication_utils')->getLastUsername());
		$this->Template->formId = 'tl_login_' . $this->id;
		$this->Template->autologin = $this->autologin;
		$this->Template->autoLabel = $GLOBALS['TL_LANG']['MSC']['autologin'];
		$this->Template->forceTargetPath = (int) $blnRedirectBack;
		$this->Template->targetPath = StringUtil::specialchars($strRedirect);
		$this->Template->failurePath = StringUtil::specialchars(Environment::get('base').Environment::get('request'));
	}
protected function compile()
	{
		$container = System::getContainer();

		
		$router = $container->get('router');

		if ($container->get('contao.security.token_checker')->hasFrontendUser())
		{
			
			global $objPage;

			$this->import(FrontendUser::class, 'User');

			$strRedirect = Environment::get('base').Environment::get('request');

			
			if ($this->redirectBack && $_SESSION['LAST_PAGE_VISITED'] != '')
			{
				$strRedirect = Environment::get('base').$_SESSION['LAST_PAGE_VISITED'];
			}

			
			elseif ($objPage->protected)
			{
				$strRedirect = Environment::get('base');
			}

			$this->Template->logout = true;
			$this->Template->formId = 'tl_logout_' . $this->id;
			$this->Template->slabel = StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['logout']);
			$this->Template->loggedInAs = sprintf($GLOBALS['TL_LANG']['MSC']['loggedInAs'], $this->User->username);
			$this->Template->action = $container->get('security.logout_url_generator')->getLogoutPath();
			$this->Template->targetPath = StringUtil::specialchars($strRedirect);

			if ($this->User->lastLogin > 0)
			{
				$this->Template->lastLogin = sprintf($GLOBALS['TL_LANG']['MSC']['lastLogin'][1], Date::parse($objPage->datimFormat, $this->User->lastLogin));
			}

			return;
		}

		$exception = $container->get('security.authentication_utils')->getLastAuthenticationError();

		if ($exception instanceof LockedException)
		{
			$this->Template->hasError = true;
			$this->Template->message = sprintf($GLOBALS['TL_LANG']['ERR']['accountLocked'], $exception->getLockedMinutes());
		}
		elseif ($exception instanceof AuthenticationException)
		{
			$this->Template->hasError = true;
			$this->Template->message = $GLOBALS['TL_LANG']['ERR']['invalidLogin'];
		}

		$blnRedirectBack = false;
		$strRedirect = Environment::get('base').Environment::get('request');

		
		if ($this->redirectBack && $_SESSION['LAST_PAGE_VISITED'] != '')
		{
			$blnRedirectBack = true;
			$strRedirect = $_SESSION['LAST_PAGE_VISITED'];
		}

		
		elseif (($objTarget = $this->objModel->getRelated('jumpTo')) instanceof PageModel)
		{
			
			$strRedirect = $objTarget->getAbsoluteUrl();
		}

		$this->Template->username = $GLOBALS['TL_LANG']['MSC']['username'];
		$this->Template->password = $GLOBALS['TL_LANG']['MSC']['password'][0];
		$this->Template->action = $router->generate('contao_frontend_login');
		$this->Template->slabel = StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['login']);
		$this->Template->value = StringUtil::specialchars($container->get('security.authentication_utils')->getLastUsername());
		$this->Template->formId = 'tl_login_' . $this->id;
		$this->Template->autologin = $this->autologin;
		$this->Template->autoLabel = $GLOBALS['TL_LANG']['MSC']['autologin'];
		$this->Template->forceTargetPath = (int) $blnRedirectBack;
		$this->Template->targetPath = StringUtil::specialchars($strRedirect);
		$this->Template->failurePath = StringUtil::specialchars(Environment::get('base').Environment::get('request'));
	}
protected function compile ( ) { $ container = System :: getContainer ( ) ; /** @var RouterInterface $router */ $ router = $ container -> get ( 'router' ) ; if ( $ container -> get ( 'contao.security.token_checker' ) -> hasFrontendUser ( ) ) { /** @var PageModel $objPage */ global $ objPage ; $ this -> import ( FrontendUser :: class , 'User' ) ; $ strRedirect = Environment :: get ( 'base' ) . Environment :: get ( 'request' ) ; // Redirect to last page visited if ( $ this -> redirectBack && $ _SESSION [ 'LAST_PAGE_VISITED' ] != '' ) { $ strRedirect = Environment :: get ( 'base' ) . $ _SESSION [ 'LAST_PAGE_VISITED' ] ; } // Redirect home if the page is protected elseif ( $ objPage -> protected ) { $ strRedirect = Environment :: get ( 'base' ) ; } $ this -> Template -> logout = true ; $ this -> Template -> formId = 'tl_logout_' . $ this -> id ; $ this -> Template -> slabel = StringUtil :: specialchars ( $ GLOBALS [ 'TL_LANG' ] [ 'MSC' ] [ 'logout' ] ) ; $ this -> Template -> loggedInAs = sprintf ( $ GLOBALS [ 'TL_LANG' ] [ 'MSC' ] [ 'loggedInAs' ] , $ this -> User -> username ) ; $ this -> Template -> action = $ container -> get ( 'security.logout_url_generator' ) -> getLogoutPath ( ) ; $ this -> Template -> targetPath = StringUtil :: specialchars ( $ strRedirect ) ; if ( $ this -> User -> lastLogin > 0 ) { $ this -> Template -> lastLogin = sprintf ( $ GLOBALS [ 'TL_LANG' ] [ 'MSC' ] [ 'lastLogin' ] [ 1 ] , Date :: parse ( $ objPage -> datimFormat , $ this -> User -> lastLogin ) ) ; } return ; } $ exception = $ container -> get ( 'security.authentication_utils' ) -> getLastAuthenticationError ( ) ; if ( $ exception instanceof LockedException ) { $ this -> Template -> hasError = true ; $ this -> Template -> message = sprintf ( $ GLOBALS [ 'TL_LANG' ] [ 'ERR' ] [ 'accountLocked' ] , $ exception -> getLockedMinutes ( ) ) ; } elseif ( $ exception instanceof AuthenticationException ) { $ this -> Template -> hasError = true ; $ this -> Template -> message = $ GLOBALS [ 'TL_LANG' ] [ 'ERR' ] [ 'invalidLogin' ] ; } $ blnRedirectBack = false ; $ strRedirect = Environment :: get ( 'base' ) . Environment :: get ( 'request' ) ; // Redirect to the last page visited if ( $ this -> redirectBack && $ _SESSION [ 'LAST_PAGE_VISITED' ] != '' ) { $ blnRedirectBack = true ; $ strRedirect = $ _SESSION [ 'LAST_PAGE_VISITED' ] ; } // Redirect to the jumpTo page elseif ( ( $ objTarget = $ this -> objModel -> getRelated ( 'jumpTo' ) ) instanceof PageModel ) { /** @var PageModel $objTarget */ $ strRedirect = $ objTarget -> getAbsoluteUrl ( ) ; } $ this -> Template -> username = $ GLOBALS [ 'TL_LANG' ] [ 'MSC' ] [ 'username' ] ; $ this -> Template -> password = $ GLOBALS [ 'TL_LANG' ] [ 'MSC' ] [ 'password' ] [ 0 ] ; $ this -> Template -> action = $ router -> generate ( 'contao_frontend_login' ) ; $ this -> Template -> slabel = StringUtil :: specialchars ( $ GLOBALS [ 'TL_LANG' ] [ 'MSC' ] [ 'login' ] ) ; $ this -> Template -> value = StringUtil :: specialchars ( $ container -> get ( 'security.authentication_utils' ) -> getLastUsername ( ) ) ; $ this -> Template -> formId = 'tl_login_' . $ this -> id ; $ this -> Template -> autologin = $ this -> autologin ; $ this -> Template -> autoLabel = $ GLOBALS [ 'TL_LANG' ] [ 'MSC' ] [ 'autologin' ] ; $ this -> Template -> forceTargetPath = ( int ) $ blnRedirectBack ; $ this -> Template -> targetPath = StringUtil :: specialchars ( $ strRedirect ) ; $ this -> Template -> failurePath = StringUtil :: specialchars ( Environment :: get ( 'base' ) . Environment :: get ( 'request' ) ) ; }
Generate the module
Generate the module