Подскажите как автоматом назначить новому пользователю определенную роль?

Главные вкладки

Аватар пользователя bran bran 18 июня 2009 в 15:05

При регистрации пользователь заполняет профайл. Вот у меня поле в профиле profile_status (Музыкант, Писатель, Художник, Фотограф)
Как сделать чтобы согласно выбранному статусу пользователю назначалась роль с соответствующими правами?

Комментарии

Аватар пользователя ilines@drupal.org ilines@drupal.org 19 октября 2009 в 23:24

А ХЗ!
Я пробовал по-разному:
в hook_user обрабатывал submit - без эффекта
тамже - insert - путем загрузки пользователя (ведь он уже на этом моменте создался), редактированием данных а затем user_save, а также прямой записи в таблицу users_roles - нифига.
А все из-за строчки в user_save: db_query('DELETE FROM {users_roles} WHERE uid = %d', $account->uid);
Но и без нее нельзя - нужна для нормальной работы "для нормальных людей"

Так что, уже 3-й час пошел бубнотанцевания Sad

Аватар пользователя ilines@drupal.org ilines@drupal.org 20 октября 2009 в 0:00

Короче.... - если не хватает ума сделать по-человечески - делаем через ....
То есть так:
Во время входа пользователя на сайт (login в значении $op хука user) проверяем значения ролеей $user и если у нас одна роль и это authenticated user тогда напрямую пишем в users_roles нужную нам роль (можно не удалять предварительно из таблицы роли, связанные с этим пользователем - так как мы проверяем на то, что в объекте пользователя массив roles состоит из одной записи). Плюс к этому - на данном этапе получаем значения profile_fields - profile_values и основываясь на них записываем ту или иную роль.
Может не "красиво", но работает...
Все .... , спать!