Hello,

Under User Management - Profiles, I have created a custom checkbox type field named "profile_over_age".

When a new site user registers for an account, if they select this checkbox, they will automatically be assigned a "teacher" role. If they do not select this box, they will automatically be assigned a "student" role. The User Settings are configured so that visitors can create accounts without administrator approval.

To accomplish this, I currently have two rules set up.

Rule 1 is invoked when "User has Registered".
The condition is a custom PHP code:

return $account->profile_over_age == "1"

The action is to "Add User Role"
The user whose role should be changed is "registered user".

Rule 2 is exactly the same except the condition is:

return $account->profile_over_age == "0"

This has not been working. No roles are assigned at all.

I've tried just putting in the condition as return $account->profile_over_age and having Rule 2 with the Negate box checked but this has not worked either. Instead, this gives the registered users both of the roles.

Would anyone be able to help?

Thank you

Comments

mrvinceo’s picture

Issue tags: +error, +permissions, +import, +user, +rules, +roles, +rule

Hi,

Have you made any progress with this? I'm having a similar problem, but related to an import of 'course codes' from our student database which is intended to tie into matching roles e.g. If course code = PH1AOP assign user to a pre-made PH1AOP role. I'm using an Execute Custom php code condition to run this rule when an account is updated:- return $account->profile_course_code1 == "PHA01";

The rule operates, but the user is assigned to several roles - not just the one selected in the rule. I'm coming down with a headache with this. I've tried the textual comparison, but I keep getting errors through this route. I confess I'm not very php savvy...

kenorb’s picture

Status: Fixed » Closed (fixed)
Issue tags: -error, -permissions, -import, -user, -rules, -roles, -rule

Automatically closed -- issue fixed for 2 weeks with no activity.