JUser: работа с объектом пользователя

Для каждого запроса в Joomla существует только один пользователь. Информация об этом пользователе постоянно доступна во фреймворке Joomla в форме объекта. В этой статье я рассмотрю как работать с объектом пользователя, а также опишу основные свойства и методы объекта.

Для получения объекта текущего пользователя, используйте следующий JFactory метод:

$user = JFactory::getUser();

Для получения информации о любом другом зарегистрированном пользователе Вы можете вызвав метод getUser() с аргументом id или имя_пользователя:

// получаем инфо о пользователе, id которого 99
$user = JFactory::getUser(99);
// получаем инфо о пользователе, имя пользователя которого johnsmith
$user = JFactory::getUser('johnsmith');

Свойства объекта и Параметры

Основная часть информации о пользователе доступна через публичные свойства объекта пользователя. Приведенный ниже код отображает имя, адрес электронной почты, имя пользователя (логин), тип и id группы:

$user = JFactory::getUser();
echo "<p>Ваше имя {$user->name}, Ваш адрес электронной почты {$user->email}, и Ваше имя пользователя {$user->username}</p>";
echo "<p>Ваш тип {$user->usertype} id группы которого {$user->gid}.</p>";

Список основных свойств объекта:

*id – уникальное цифровое id пользователя.
*name – имя пользователя (например, John Smith).
*username – логин/имя пользователя (например, shmuffin1979).
*email – адрес электронной почты пользователя (например, Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. ).
*password – зашифрованная версия пароля пользователя.
*password_clear – устанавливается как «чистый» пароль пользователя только тогда, когда происходит процесс изменения пароля. В противном случае, остается пустым.
*usertype – Тип пользователя внутри Joomla (Администратор, Управляющий и т.д.).
*gid – id группы, которая соответствует типу пользователя.
*block – устанавливается в значение '1', когда пользователь заблокирован в Joomla.
*registerDate – дата регистрации пользователя.
*lastvisitDate – дата последнего посещения.
*guest – если пользователь не залогинен, то это свойство принимает значение '1'. Остальные свойства объекта в таком случае будут не установлены или установлены в значения по умолчанию.

Очень часто необходимо проверить, залогинился пользователь или нет. Это легко можно проверить с помощью такого способа:

$user = JFactory::getUser();
// если пользователь гость
if ($user->guest) {
	echo "<p>Пожалуйста залогиньтесь.</p>";
} else {
	echo "<p>Добро пожаловать {$user->username}.</p>";
}

В дополнение к свойствам (которые сохраняются в базе данных в колонках таблицы #__users), существуют также параметры пользователя. Для получения значения параметра, необходимо вызвать метод getParam() объекта пользователя. При этом в качестве аргумента необходимо передать имя параметра, а также значение по умолчанию, в случае если оно будет пустым.

$user = JFactory::getUser();
$language = $user->getParam('language', 'default');
 
echo "<p>Ваш язык - {$language}.</p>";

Привилегии

Не все авторизированные пользователи получают одинаковые права. Например, Суперадминистратор может редактировать содержимое любого пользователя, в то время как Автор может редактировать только свое содержимое. Метод authorize() как раз и используется для того, чтобы определить, имеет ли пользователь права выполнять определенные задачи. Первый аргумент используется для определения компонента или функции, для которых выполняется проверка. Второй аргумент определяет задачу. Третий и четвертый аргументы необязательны; они определяют типы записи и права соответственно.

В Joomla 1.5 права для всех базовых компонентов хранятся в libraries/joomla/user/authorization.php. Они доступны всем расширениям, в том случае, когда требуется аутентификация. Если схема прав компонента Contentподходит для Вашего расширения, то для определения функций, которые необходимо предоставить пользователю, Вы можете использовать, например, такой код:

$user = JFactory::getUser();
 
if ($user->authorize('com_content', 'edit', 'content', 'all')) {
	echo "<p>Вы можете редактировать всё содержимое.</p>";
} else {
	echo "<p>Вы не можете редактировать всё содержимое.</p>";
}
 
if ($user->authorize('com_content', 'publish', 'content', 'own')) {
	echo "<p>Вы можете опубликовывать свое содержимое.</p>";
} else {
	echo "<p> Вы можете опубликовывать свое содержимое.</p>";
}

Права базовых функций могут и не подходить для Вашего расширения. В таком случае, Вы можете создать свои права. Сначала, Вам необходимо получить доступ к объекту авторизации, используя JFactory метод getACL(). Он работает, так же как и getUser(), создавая один объект авторизации в течение любого отдельного запроса Joomla. Как только Вы получили доступ к объекту, то вызывайте метод addACL() для добавления прав. Передайте в качестве аргументов:

*имя Вашего расширения или функции;
*имя задачи;
*строку 'users';
*тип пользователя (маленькими буквами).

Если Вы хотите указать типы записей и права, то передайте их в качестве необязательных параметров.
Имейте в виду, что в 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>";
	}

 

 

http://blog.contra.lv/2011/04/23/juser-rabota-s-obektom-polzovatelya/



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

Блог

Календарь приёма объявлений

Небольшой пример из повседневной практики. Организация меняет реквизиты, и они вступят в силу через  пару недель. На сайте идет приём объявлений и объявления принимаются на несколько месяцев в...

Дырка в com_content

Сегодня у товарища, сайт которого находится на старой  Joomla 1.0.3, была сильная нагрузка на сервере, просматривая логи обнаружил не вежливый запрос такого порядка: http://сайт/index2...

Лечим вирус на сайте

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

Troj/JSRedir-MH

Снова грянул гром зарежения сайтов новым вирусом  Troj/JSRedir-MH.  И так в коротко по вирусу Troj/JSRedir-MH. Вирус или троян куда интереснее чем свои предшествиники, тепер...

Доработка расширения для рассылки Send Email JK

Сегодня поделюсь немного интересной информацией для владельцев сайтов собранных ан joomla.  Рано и поздно возникает задача подписки и рассылки информации с сайта, это может быть разная постановка зада...

Привет Ie 10 регулярка

И вот и мне пришлось столкнулся с проблемами перехода на win 8 в придачу с ie 10, некоторых постоянных пользователей моих сайтов. На многих сайтах  имеющих раздел по приёму объявлений, использ...

Kunena заменяем ссылку на профиль пользователя

Всем привет, снова снова кунена, получил задание на допиливание популярного форума Kunena, сегодня потребовалось поменять ссылку на профиль пользователя. Это связано с тем, что на сайте стоит социа...

Работает на Kunena - зачем на каждой странице?

  Все у кого стоит форум kunena мешает надпись с двумя ссылкам внизу форума "Работает на Kunena". Сея надпись висит на каждой странице форма, а также страница разработчиков содержит множество вн...

Kunena избавимся от лишних quote

Для тех кто действительно делает сайт для людей, моя следующая заметка. Расскажу вам, как избавиться от лишних quote в постах на форуме kunena. У меня несколько тематических сайтов с нормальной посеща...

Kunena решаем проблему с пропажей аватаров

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

Джомлавикам

Обработка параметров расширений joomla

При разработке расширений для CMS Joomla, таких как плагины, модули, компоненты или шаблоны, часто возникает необходимость получить параметры разрабатываемого или любого другого расширения. В этой ...

Кunena крамсаем шаблон

1. В папке \components\com_kunena\template\ваш_шаблон\ находим файл template.xml и вставляем в него такой кусок (чтобы была возможность выбора показывать это поле или нет): <param name="l...

Подключить свои классы и методы в Joomla?

Иногда случается, что набор собственных функций или библиотек нужно подключить в Joomla. Но иногда подключить их нужно так, чтобы они присутсвовали во всей системе, вне зависимо...

3 новых полезных класса в Joomla 2.5

В платформе Joomla 11.3 разработчики добавлил несколько полезных новых классов для разработчиков. Рассмотрю некоторый из них - JGrid (для построения HTML таблиц), JWebClient (для получения информац...

Репозиторий файлов на Joomla средствами Apache

Создадим две вложенные директории /files/files в корне сайта. Если вы пожелаете использовать другие имена директорий, то вам необходимо будет внести соответствующие правки в дальнейшем. ...