Joomla 1.5: Объект пользователя JUser - Joomla 1.5: объект пользователя JUser стр.2

Joomla 1.5: Объект пользователя JUser - Joomla 1.5: объект пользователя JUser стр.2

Индекс материала
Joomla 1.5: Объект пользователя JUser
Joomla 1.5: объект пользователя JUser стр.2
Все страницы

Определение Статуса пользователя в Joomla 1.5

Частенько, прежде чем начать что то делать, приходиться проверять, зарегистрирован ли пользователь в системе, или нет.  Это очень просто сделать, проверив свойство объекта JUser ::guest  если оно равно  '1',  значит текущий пользователь не  зарегистрирован или не авторизован, т.е. он гость. Когда пользователь авторизуется, JUser ::guest  будет установлено в '0'.

<?php

$user =& JFactory::getUser();
	
if ($user->guest) {
  echo "<p>Только зарегистрированные пользователи могут видеть скытый текст</p>";
} else {

?>
		
<h1>Скрытый текст</h1>
		
<p>
Is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
</p>

<?php 	} ...

Права доступа Joomla 1.5

Не всем авторизованным пользователям дают равные права. Например,  Super Administrator может   отредактировать чей - то контент, в то время как Publisher -  может отредактировать только собственный.

Для управления прав доступом Joomla 1.5 использует PHP gacl API ознакомиться с ним подробнее можно

    Тут следует определиться с терминами:

  • ARO – объект, который запрашивает доступ ( Access Request Objects )
  • ACO – объект, доступом к которому мы управляем ( Access Control Objects )
  • AXO – объекты расширенного доступа. ( Access eXtends Objects )

Метод объекта  JUser ::authorize( $acoSection, $aco, $axoSection = null, $axo = null )  - может использоваться, чтобы определить, есть ли у текущего пользователя право доступа, чтобы выполнить определенную задачу. Первый параметр это название  компонента или функции, для которого  мы хотим проверить доступ. Второй параметр это задача, права на выполнение которой  мы хотим узнать. Третьи и четвертый являются опциональными - это тип записи и права.

В Joomla! 1.5 права доступа для всех основных компонентов размещены в libraries/joomla/user/authorization.php в строках 52 - 211 в конструкторе класса JAuthorization  Эти наборы правил доступны для всех расширений везде, где требуется аутентификация. Если, допустим схема прав доступа компонента com_сontent  подходит для Вашего расширения, Вы можете использовать код, подобный следующему, чтобы определить какие функции дать определённому пользователю.

$user =& JFactory::getUser();

if ($user->authorize('com_content', 'edit', 'content', 'all')) {
  echo "<p>You may edit all content.</p>";
} else {
  echo "<p>You may not edit all content.</p>";
}

if ($user->authorize('com_content', 'publish', 'content', 'own')) {
  echo "<p>You may publish your own content.</p>";
} else {
  echo "<p>You may not publish your own content.</p>";
}

Предустановленные права доступа, возможно и не подойдут для вашего расширения. Коли так, Вы можете создать свои собственные права доступа.

Установить свои права доступа в Joomla 1.5

Для установки собственных прав доступа в Joomla 1.5 потребуется код, который будет их устанавливать разместить в таком месте, где он будет выполняться всегда и сто-пудово, например, в начале компонента, где предполагается использовать эти права. Или в общесистемном плагине.

Итак, для начала нужно получить объект авторизации, используем JFactory ::getACL()  ну, тут понятно это ситуация, как и с JFactory ::getUser() – нужно для создания лишь одного экземпляра объекта ( это одна из реализаций паттерна Singleton в Joomla )  . Вызов этого метода вернёт экземпляр объекта  класса JAuthorization. Как только у Вас есть этот объект, вызываем

JAuthorization ::addACL( $aco_section_value,
                         $aco_value,
                         $aro_section_value,
                         $aro_value,
                         $axo_section_value=NULL,
                         $axo_value=NULL,
                         $return_value=NULL ) 

чтобы добавить права доступа.

    Параметры JAuthorization ::addACL

  • Строка: название компонента или функции
  • Строка: задача
  • Строка: 'users'
  • Тип пользователя: $user->usertype (в нижнем регистре).

Если нужно определить расширенные права доступа, передайте их как дополнительные два параметра.

Кстати!

В Joomla! 1.5, права доступа не наследуются. Например, если дать Админу право редактировать контент, Супер Админы автоматически не получат это право – его для них нужно предоставить явно.

$auth =& JFactory::getACL();
	
$auth->addACL('com_userinfo15', 'persuade', 'users', 'super administrator');
$auth->addACL('com_userinfo15', 'persuade', 'users', 'administrator');
$auth->addACL('com_userinfo15', 'persuade', 'users', 'manager');

$user =& JFactory::getUser();
	
if ($user->authorize('com_userinfo15', 'persuade')) {
	echo "<p>You may persuade the system to do what you wish.</p>";
} else {
	echo "<p>You are not very persuasive.</p>";
}

Как програмно создать нового пользователя в Joomla 1.5

Как же создать нового пользователя в Joomla 1.5 ? Для этого ознакомьтесь с кодом в файле:  …/components/com_user/controller.php – там в строках 219 – 289 содержится код метода UserController::register_save() который и заводит нового пользователя в системе

Оригинал статьи



Добавить комментарий


Защитный код
Обновить



Кто на сайте
Сейчас 109 гостей онлайн