Joomla 1.5: Объект пользователя JUser

Joomla 1.5: Объект пользователя JUser

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

Объект пользователя - JUser, текущего сеанса, доступен в Joomla всегда. Получить его можно в любой момент, обратившись на фабрику JFactory, как показано ниже:

$user =& JFactory:: getUser();

А вот для того, что бы получить любого другого пользователя нужно сделать тоже самое, но передать методу  JFactory::getUser($user) параметр может быть целым числом –  это системный идентификатор пользователя ( его  содержит поле id таблицы `…_users`  базы данных ). Или в качестве параметра можно передать строку -  имя пользователя:

$user =& JFactory:: getUser(99);
$user =& JFactory:: getUser('johnsmith');

Получение ссылки на объект JUser  путём вызова фабричного метода JFactory::getUser - гарантирует, что в системе будет создан только один объект JUser – это сэкономит вам память и время работы сценариев. Большая часть информации о пользователе доступна через открытые свойства объекта класса JUser. Пример ниже выводит имя текущего пользователя, его e-mail, логин, тип  и id группы:

echo  '<p>Your name is '.$user->name.', your email is '.$user->email.',  and your username is '.$user->username.'</p>';
echo  '<p>Your usertype is '.$user->usertype.' which has a group id of '.$user->gid.'</p>';

Свойства JUser Joomla 1.5

Эти свойства и параметры генерируются автоматоматически, при получении объекта JUser, путём вызова метода JFactory:: getUser ();

id
- уникальный, числовой  идентификатор пользователя. Используйте его, ссылаясь на пользовательскую запись в других таблицах базы данных.
name
- имя пользователя. (например, Vint Cerf)
username
- логин/псевдоним пользователя. (например, shmuffin1979)
email
- адрес электронной почты пользователя
password
- содержит зашифрованную версию пароля пользователя
password_clear
– Это свойство используется для внесения нового пароля пользователя, который передаётся в него в незашифрованном виде. При любых других случаях работы с данными пользователя это свойство нужно оставлять пустым.
usertype
- роль пользователя в пределах Joomla!. (Super Administrator, Editor, и т.д..)
gid
- Установленный идентификатор группы пользователя, который соответствует usertype.
block
– Это флаг блокировки пользоваталя, если равен 1 – значит пользователь заблокирован.
registerDate
– Дата регистрации пользователя.
lastvisitDate
– Дата последнего посещения.
guest
 
- Если пользователь не зарегистрирован, это свойство, будет равно '1'.  Другие свойства примут  значения по умолчанию.

В дополнение к вышеперечисленным свойствам экземпляра объекта класса JUser ( которые размещены в столбцах, в таблице …users - базы данных ), есть ещё параметры пользователя, которые хранят  настройки пользователя:

  • admin_language
  • language
  • editor
  • helpsite
  • timezone

Чтобы получить любой из этих параметров, нужно обратиться к методу

JUser ::getParam($paramName, $defaultValue)

 - передав ему  первый параметр строку - название соответствующей настройки, а второй параметр это значение по-умолчанию – оно будет возвращено, если запрашиваемая настройка не установлена:

$user =& JFactory::getUser();
$language = $user->getParam('language', 'the default');
echo '<p>Your language is set to '.$language.'</p>';

Определение Статуса пользователя в 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() который и заводит нового пользователя в системе

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

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


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



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