Необходимость одобрения администратором зарегистрированных пользователей в зависимости от роли [Решено]

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

Аватар пользователя Hoodognik Hoodognik 15 января 2013 в 10:25

Возникла необходимость одобрения администратором зарегистрированных пользователей в зависимости от выбранной роли при регистрации. Как возможно такое реализовать?

Комментарии

Аватар пользователя Hoodognik Hoodognik 15 января 2013 в 11:23

Ты говоришь использовать rules. Я пробовал создать действие.
-After saving a new user account
-проверка на роль
- Block user
при регистрации выдаёт ошибку.

PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '178-4' for key 'PRIMARY': INSERT INTO {users_roles} (uid, rid) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1); Array ( [:db_insert_placeholder_0] => 178 [:db_insert_placeholder_1] => 4 ) в функции user_save() (строка 603 в файле /home/www/hoodognik/data/www/egegia.roshoster.com/modules/user/user.module).

Аватар пользователя Niklan Niklan 15 января 2013 в 16:51

"Hoodognik" wrote:
Ты говоришь использовать rules. Я пробовал создать действие.
-After saving a new user account
-проверка на роль
- Block user

Проверил, работает.

Аватар пользователя Hoodognik Hoodognik 17 января 2013 в 7:23

Дело в том что при создании пользователя у меня рулесами в зависимости от заполнения формы присваивается роль пользователю. И нужно заблокировать его. По отдельности оба действия выполняются. Но если они оба включены, то вылазиет ошибка. Не могу понять в чём дело. Подскажите кто знает.

Аватар пользователя Niklan Niklan 17 января 2013 в 16:35

"Hoodognik" wrote:

Тогда напишите структуру. Какие роли, как они выбираются при регистрации и т.д. Чтобы воссоздать вашу среду.
Мы не знаем же как вы организовали данную схему.

Аватар пользователя Hoodognik Hoodognik 20 января 2013 в 13:51

а по поводу этой ошибки есть соображения?
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '178-4' for key 'PRIMARY': INSERT INTO {users_roles} (uid, rid) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1); Array ( [:db_insert_placeholder_0] => 178 [:db_insert_placeholder_1] => 4 ) в функции user_save() (строка 603 в файле /home/www/hoodognik/data/www/egegia.roshoster.com/modules/user/user.module).

Аватар пользователя Hoodognik Hoodognik 20 января 2013 в 13:54

И на ваших скриншотах я увидил только одно действие. Одно оно выполняется. А у меня 2 действия.
Действие №1 - Присваиваем пользователю роль
Действие №2 - Блокируем пользователя
По отдельности они работают.
А вместе нет..

Аватар пользователя Niklan Niklan 10 ноября 2015 в 11:48

Окей. Ваш метод действительно еррорит. Проблема в Rules, которую на данный момент пофиксили в одной из dev веток, как я понял. Но проблема решилась добавлением двух отдельных действий.

Создаете\редактируете рулз.

  • Events
    • After saving a new user account
  • Conditions
    • Text comparison - Parameter: Text: [account:field-role], Matching text: Специалист (скрин)
  • Actions
    • Add user role - Parameter: User: [account], Roles: specialist
    • Add a variable - Parameter: Type: Integer, Value: [account:uid] - Provides variables: ID аккаунта (acc_id) (скрин)
    • Fetch entity by id - Parameter: Entity type: User, Identifier: [acc-id] - Provides variables: Сущность аккаунта (acc_entity) (скрин)
    • Block a user - Parameter: User: [acc-entity] (скрин)

Получаем в итоге такую картину: http://www.drupal.ru/files/5_11.jpg

Все работает, ничего не еррорит. Надеюсь Вам поможет.