Таблица users
Таблица users является ядром системы пользователей Drupal. В ней хранятся основные данные учётных записей: логины, пароли, email-адреса, статусы активности и метки времени важных событий (регистрация, последний вход).
Поля
| Поле | Тип данных | Описание |
|---|---|---|
uid |
int |
Уникальный идентификатор пользователя. Первичный ключ таблицы. Пользователь с uid 0 является анонимным, а с uid 1 - первым администратором сайта.
|
uuid |
varchar(128) |
Универсальный уникальный идентификатор (Universally Unique Identifier) для пользователя. Используется для интеграций и миграций данных. |
langcode |
varchar(12) |
Код языка по умолчанию для данного пользователя. |
name |
varchar(60) |
Уникальное имя пользователя (логин), используемое для входа на сайт. |
pass |
varchar(255) |
Хэш пароля пользователя. Пароли хранятся в зашифрованном виде с использованием современных алгоритмов хэширования. |
mail |
varchar(254) |
Электронная почта пользователя. Должна быть уникальной для каждой учётной записи. |
timezone |
varchar(32) |
Часовой пояс пользователя, например Europe/Moscow.
|
status |
tinyint |
Статус учётной записи: 1 - активна, 0 - заблокирована. Заблокированные пользователи не могут войти в систему.
|
created |
int |
Метка времени (Unix timestamp) создания учётной записи. |
changed |
int |
Метка времени последнего изменения данных пользователя. |
access |
int |
Метка времени последнего успешного входа пользователя в систему. |
login |
int |
Метка времени последней попытки входа (успешной или нет). Используется для ограничения частоты попыток входа. |
init |
varchar(254) |
Email-адрес, который был указан при регистрации. Может отличаться от текущего поля mail, если пользователь его менял.
|
default_langcode |
tinyint |
Флаг, указывающий, является ли langcode языком по умолчанию (1) или был установлен пользователем (0).
|
Как это работает
При регистрации нового пользователя в таблицу users добавляется запись. Поле name (логин) и mail (email) должны быть уникальными. Пароль в открытом виде никогда не сохраняется, вместо него хранится его хэш в поле pass.
При входе пользователя система находит запись по логину (name), проверяет статус (status) и сверяет хэш введённого пароля с хэшем в поле pass. После успешной аутентификации обновляются поля access и login.
Важно понимать, что таблица users хранит только базовые данные. Дополнительные поля (например, имя, фамилия, телефон), добавляемые через административный интерфейс, хранятся в других таблицах, связанных по uid, например в users_field_data.
Поле status позволяет администраторам блокировать учётные записи без их удаления. Заблокированный пользователь не сможет войти в систему, но все связанные с ним данные (например, комментарии, материалы) останутся нетронутыми.
Пример SQL-запроса
Выбрать логин, email и дату последнего входа для активных пользователей, зарегистрированных за последний месяц, можно следующим запросом:
SELECT uid, name, mail, FROM_UNIXTIME(access) as last_access
FROM users
WHERE status = 1
AND created > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 MONTH))
ORDER BY access DESC;
Смотрите также
-
таблицу
users_field_data,
которая хранит дополнительные данные пользователя -
таблицу
user__roles,
которая связывает пользователей с их ролями -
таблицу
sessions,
которая хранит данные активных пользовательских сессий -
таблицу
node,
которая хранит материалы, созданные пользователями