При регистрации пользователь заполняет профайл. Вот у меня поле в профиле profile_status (Музыкант, Писатель, Художник, Фотограф)
Как сделать чтобы согласно выбранному статусу пользователю назначалась роль с соответствующими правами?
При регистрации пользователь заполняет профайл. Вот у меня поле в профиле profile_status (Музыкант, Писатель, Художник, Фотограф)
Как сделать чтобы согласно выбранному статусу пользователю назначалась роль с соответствующими правами?
Комментарии
спасибо что не отказали((((
А ХЗ!
Я пробовал по-разному:
в hook_user обрабатывал submit - без эффекта
тамже - insert - путем загрузки пользователя (ведь он уже на этом моменте создался), редактированием данных а затем user_save, а также прямой записи в таблицу users_roles - нифига.
А все из-за строчки в user_save: db_query('DELETE FROM {users_roles} WHERE uid = %d', $account->uid);
Но и без нее нельзя - нужна для нормальной работы "для нормальных людей"
Так что, уже 3-й час пошел бубнотанцевания
Короче.... - если не хватает ума сделать по-человечески - делаем через ....
То есть так:
Во время входа пользователя на сайт (login в значении $op хука user) проверяем значения ролеей $user и если у нас одна роль и это authenticated user тогда напрямую пишем в users_roles нужную нам роль (можно не удалять предварительно из таблицы роли, связанные с этим пользователем - так как мы проверяем на то, что в объекте пользователя массив roles состоит из одной записи). Плюс к этому - на данном этапе получаем значения profile_fields - profile_values и основываясь на них записываем ту или иную роль.
Может не "красиво", но работает...
Все .... , спать!