Особенности довольно удобны для таких вещей, как это. Однако, если вам нужно создавать роли и добавлять разрешения программно, вам не нужно копаться в базе данных самостоятельно.
Когда вы создаете новую пользовательскую роль с помощью user_role_save()
, она обновит переданный вами объект новым назначенным идентификатором роли пользователя. Вы можете увидеть пример этого в standard_install()
функции в стандартном профиле установки.
$admin_role = new stdClass();
$admin_role->name = 'administrator';
...
user_role_save($admin_role);
user_role_grant_permissions($admin_role->rid, array_keys(module_invoke_all('permission')));
Этот пример показывает, что вы можете создать новую роль пользователя, а затем получить доступ к ее rid
свойству, которое было заполнено user_role_save()
. Также показано, как добавить разрешения для этой роли с помощью user_role_grant_permissions()
. В этом случае он предоставляет роли «администратор» все доступные разрешения.
Если вам нужно получить идентификатор роли пользователя, созданной кем-то другим, вы можете использовать user_role_load_by_name()
объект для этой роли пользователя. Тогда вы просто захватите идентификатор с $role->rid
.