Особенности довольно удобны для таких вещей, как это. Однако, если вам нужно создавать роли и добавлять разрешения программно, вам не нужно копаться в базе данных самостоятельно.
Когда вы создаете новую пользовательскую роль с помощью 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.