вторник, 24 мая 2011 г.

Перенаправление на страницу авторизации со своего компонента Joomla 1.5

Мне понадобилось добиться от компонента того, чтобы если каким-то образом не авторизованный пользователь перейдёт на страницу компонента, то выскочит форма авторизации и после авторизации пользователь получит желанное содержимое. Не буду многословным, просто приведу код контроллера:


<?php
defined('_JEXEC') or die( 'Restricted access' );
jimport( 'joomla.application.component.controller' );
class HostOrderController extends JController
{
function show()
{
$user =& JFactory::getUser();

if ($user->guest) {
$redirecturl = base64_encode("index.php?option=com_hostorder");
$joomlaLoginUrl = 'index.php?option=com_user&view=login&return=';
       $finalUrl = $joomlaLoginUrl.$redirecturl;

global $mainframe;
$mainframe->redirect($finalUrl);
}
echo "YEAP!";
}
}


На всякий случай код точки доступа:

<?php
defined('_JEXEC') or die('Restricted access');
require_once (JPATH_COMPONENT.DS.'controller.php');


$controller = new HostOrderController( array('default_task' => 'show') );
$controller->execute(JRequest::getVar('task', null, 'default', 'cmd'));
$controller->redirect();

1 комментарий:

  1. Я бы советовал вам размещать подобный код не в каком либо из методов, а в контроллере. Разумеется что если метод один - то это не имеет значения, но все же.
    Еще думаю что использование константы с названием компонента немного некорректно. Гибкость теряется.
    Можно, например, такой конструкцией воспользоваться
    $component = JRequest::getVar('option');

    ОтветитьУдалить