Fork me on GitHub
Important security fix: 2.1.10, released 4 May.

Check if a user is in a given role

edited February 2012 in Development

Hi,
What is the easiest way to check if a user belongs to a given role. For example in my application i want a developers role, which they will enter after agreeing to some terms. So certain pages I only want to show if they belong to that role. How would i go about doing this.

Thanks,
Gary Mardell.

Answers

  • edited February 2012

    It appears its not the done thing in Vanilla, and roles are purely to define groups of permissions. So I will use that method, however for anyone wanting code to do this, there may be a better way:

    $Session = Gdn::Session();      
    $UserModel = Gdn::UserModel();      
    $Roles = $UserModel->GetRoles($Session->UserID);
    $RoleNames = ConsolidateArrayValuesByKey($Roles, 'Name');       
    if(in_array('Member', $RoleNames)) {
        $HasMemberRole = TRUE;
    }
    
  • jspautschjspautsch Themester ✭✭✭

    I think you're going about this the wrong way. You want to check if someone has a certain permission, not role. You use the role to assign that permission, and then just check the permission when viewing the page, which is really simple.

    For example:

    if (Gdn::Session()->CheckPermission('Vanilla.Categories.Manage'))
        //do stuff
Sign In or Register to comment.