Таблица user_roles
Таблица user_roles является системной таблицей Drupal, которая хранит определения всех ролей пользователей. Роли представляют собой группы пользователей с определенными наборами разрешений, которые назначаются через административный интерфейс Drupal.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
uid |
int |
Уникальный идентификатор роли. Является первичным ключом таблицы. |
name |
varchar(64) |
Машинное имя роли. Должно быть уникальным и содержать только строчные латинские буквы, цифры и подчеркивания. |
label |
varchar(64) |
Человекочитаемое название роли, которое отображается в интерфейсе администратора. |
weight |
int |
Вес роли, определяющий порядок отображения ролей в списках. Роли с меньшим весом отображаются выше. |
Как это работает
Drupal использует систему ролевого управления доступом (RBAC). Каждая роль в таблице user_roles имеет уникальный идентификатор (uid) и машинное имя (name). Связь между пользователями и ролями осуществляется через таблицу users_roles, которая является связующей таблицей многие-ко-многим.
Каждой роли назначаются определенные разрешения через административный интерфейс admin/people/permissions. Эти разрешения хранятся в таблице role_permission.
По умолчанию Drupal создает три основные роли: "Анонимный пользователь" (anonymous user), "Аутентифицированный пользователь" (authenticated user) и "Администратор" (administrator). Роль "Аутентифицированный пользователь" автоматически назначается всем зарегистрированным пользователям.
Поле weight позволяет управлять порядком отображения ролей в различных интерфейсах, таких как форма назначения ролей пользователю или страница управления разрешениями.
Пример SQL-запроса
Получить список всех ролей с их весом можно следующим запросом:
SELECT uid, name, label, weight
FROM user_roles
ORDER BY weight ASC, name ASC;
Найти пользователей, имеющих определенную роль:
SELECT u.uid, u.name as username, r.label as role_name
FROM users u
INNER JOIN users_roles ur ON u.uid = ur.uid
INNER JOIN user_roles r ON ur.rid = r.rid
WHERE r.name = 'content_editor';
Смотрите также
-
таблицу
users,
которая хранит информацию о пользователях -
таблицу
users_roles,
которая связывает пользователей с ролями -
таблицу
role_permission,
которая хранит разрешения для ролей -
таблицу
sessions,
которая управляет пользовательскими сессиями