ertttert
Books-CMS.clan.su

ГЛАВА 6. Работа с пользователями

Пользователи — это смысл работы с Drupal. Среда Drupal может помочь пользователям создавать общие проекты, совместно работать над ними и формировать онлайновые сообщества. В данной главе вы узнаете о механизмах аутентификации, входа и внутреннего представления пользователей. Мы начнем с рассмотрения объекта $user и его структуры. Затем разберемся с процессом регистрации, входа и аутентификации пользователей. В конце главы будет показано, как связать Drupal с внешними системами аутентификации, такими как LDAP и Pubcookie.

Объект $user

Согласно требованиям Drupal, пользователь для выполнения входа должен иметь включенные cookie-наборы: пользователь с отключенными cookie-наборами может взаимодействовать с Drupal только как анонимный пользователь. Во время процесса загрузки Drupal создает глобальный объект $user, который представляет сущность текущего пользователя. Если пользователь не вошел в систему (и поэтому не имеет cookie-набора сеанса), он считается анонимным пользователем. Код создания анонимного пользователя выглядит следующим образом (и находится в файле includes/bootstrap.inc):

function drupal_anonymous_user($session = '') {
$user = new stdClass();
$user->uid = 0;
$user->hostname = ip_address();
$user->roles = array();
$user->roles[DRUPAL_ANONYMOUS_RID] = 'anonymous user';
$user->session = $session;
$user->cache = 0;
return $user;
}

С другой стороны, если пользователь выполнил вход, объект $user создается соединением таблиц users, user_roles и sessions по идентификатору пользователя. Значения всех полей из всех таблиц заносятся в объект $user.

На заметку! Идентификатор пользователя — это целое число, которое назначается, когда пользователь регистрируется или администратор создает пользовательскую учетную запись. Этот идентификатор является первичным ключом в таблице users.

Содержимое объекта $user легко просмотреть: для этого нужно добавить в файл index.php операторы global $user; print_r($user);. Ниже показано, как обычно выглядит объект $user для выполнившего вход пользователя:

stdClass Object (
 [uid] => 1
 [name] => admin
 [pass] => $S$CnUvfOYdoxl/Usy.X/Y9/SCmOLLY6Qldrzjf7EOW0fR4LG7rCAmR
 [mail] => joe@example.com
 [theme] =>
 [signature] =>
 [signature_format] => 0
 [created] => 1277957059
 [access] => 1278254230
 [login] => 1277990573
 [status] => 1
 [timezone] =>
 [language] =>
 [picture] => 0
 [init] => joe@example.com
 [data] =>
 [sid] => 8cnG9e0jsCC7I7IYwfWB0rmRozIbaLlk35IQGN5fz9k
 [ssid] =>
 [hostname] => ::1
 [timestamp] => 1278254231
 [cache] => 0
 [session] => batches|a:1:{i:3;b:1;}
 [roles] => Array (
 [2] => authenticated user
 [3] => administrator )
}

В этом объекте $user данные полей, имена которых выделены курсивом, берутся из таблицы sessions. Назначение компонентов объекта $user объясняется в табл. 6.1.


Таблица 6.1. Компоненты объекта $user

Компонент Описание
Из таблицы users
uid Идентификатор данного пользователя. Является первичным ключом таблицы users и уникален для данной инсталляции Drupal
name Имя пользователя, вводимое пользователем при входе
pass Хеш пароля пользователя, вычисленный по алгоритму sha512; сравнивается при входе пользователя. Сами пароли не сохраняются, и поэтому их невозможно восстановить, а можно только изменить
mail Адрес электронной почты пользователя
theme Поле не рекомендуется для использования, но оставлено по соображениям совместимости
signature Подпись, которую пользователь вводит на странице своей учетной записи. Применяется, когда пользователь добавляет комментарий, и отображается, если только активирован модуль комментирования
signature format Формат подписи пользователя (т.е. фильтрованный текст или полный текст)
created Метка времени Unix для момента создания учетной записи пользователя
access Метка времени Unix для момента последнего обращения пользователя
login Метка времени Unix для момента последнего успешного входа
status Содержит 1, если пользователь на хорошем счету, и 0, если пользователь заблокирован
timezone Количество секунд, на которое местное время пользователя отличается от GMT
language Стандартный язык пользователя. Обычно пусто, за исключением случаев, когда на сайте активировано несколько языков и пользователь выбрал язык в форме настройки учетной записи
picture Путь к файлу изображения, которое пользователь назначил для своей учетной записи
init Почтовый адрес, введенный пользователем при первоначальной регистрации
data Произвольные данные, которые могут храниться в этом поле модулями
Из таблицы user_roles
roles Роли, назначенные в данный момент сеансу пользователя системой PHP
Из таблицы sessions
sid Идентификатор, назначенный сеансу данного пользователя системой PHP
ssid Идентификатор, назначенный защищенному сеансу пользователя системой PHP
hostname IP-адрес, с которого пользователь просматривает текущую страницу
timestamp Метка времени Unix для момента, когда браузер пользователя в последний раз получил заполненную страницу
cache Метка времени, используемая для кэширования отдельных пользователей (см. includes/cache.inc)
session Произвольные временные данные, которые могут сохраняться здесь модулями во время сеанса пользователя
Всего комментариев: 3
3 SergFooky  
0
<a href=http://zmkshop.ru/>ооо нпо новинский завод металлоконструкции""</a>

2 Waltercrogs  
0
https://telegra.ph/Unlock-Exciting-Rewards-with-1xBet-Welcome-Bonus-04-07

1 Neculiti Ivan  
0
Yes, really. I join told all above. We can communicate on this theme. Here or in PM.


_ _ _ _ _ _ _ _ _ _ _ _ _ _
Nekultsy Ivan sherlock github

Имя *:
Email *:
Код *:


Бесплатный конструктор сайтов - uCoz