input->set('view', 'login'); $this->input->set('layout', 'default'); // For non-html formats we do not have login view, so just display 403 instead if ($this->input->get('format', 'html') !== 'html') { throw new RuntimeException(JText::_('JERROR_ALERTNOAUTHOR'), 403); } parent::display(); } /** * Method to log in a user. * * @return void */ public function login() { // Check for request forgeries. JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $model = $this->getModel('login'); $credentials = $model->getState('credentials'); $return = $model->getState('return'); $result = $app->login($credentials, array('action' => 'core.login.admin')); if ($result && !($result instanceof Exception)) { // Only redirect to an internal URL. if (JUri::isInternal($return)) { // If &tmpl=component - redirect to index.php if (strpos($return, 'tmpl=component') === false) { $app->redirect($return); } else { $app->redirect('index.php'); } } } $this->display(); } /** * Method to log out a user. * * @return void */ public function logout() { JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); $userid = $this->input->getInt('uid', null); if ($app->get('shared_session', '0')) { $clientid = null; } else { $clientid = $userid ? 0 : 1; } $options = array( 'clientid' => $clientid, ); $result = $app->logout($userid, $options); if (!($result instanceof Exception)) { $model = $this->getModel('login'); $return = $model->getState('return'); // Only redirect to an internal URL. if (JUri::isInternal($return)) { $app->redirect($return); } } parent::display(); } }