通过UserID从RoleGroup获取RoleName

时间:2016-11-24 15:36:37

标签: dotnetnuke dotnetnuke-8

我有一个RoleGroup,里面有一些Roles。用户只能属于这些角色之一。如何根据用户所属的RoleName获取RoleGroup?有什么想法吗?

Dim roleGroupOmniProfiles = RoleController.GetRoleGroupByName(PortalSettings.Current.PortalId, "OmniProfiles")

问题在这里

Dim omniProfile = roleGroupOmniProfiles.Roles.Any(Function(role) oUser.UserID)

1 个答案:

答案 0 :(得分:1)

roleGroupOmniProfiles包含KeyValuePair<string, RoleInfo>的集合,因此您可以循环播放它们,如下所示。

但我不确定您可以RoleNameRoleGroup获得UserID,因为UserID没有与RoleGroup的直接链接。不应该根据UserID获取用户的所有角色,并检查RoleGroup属于哪个Roles,如果有的话。

C#

var roleGroupOmniProfiles = RoleController.GetRoleGroupByName(PortalId, "OmniProfiles");

if (roleGroupOmniProfiles != null)
{
    foreach (KeyValuePair<string, RoleInfo> role in roleGroupOmniProfiles.Roles)
    {
        Label1.Text += role.Key + " | " + role.Value.RoleName + "<br>";
    }
}

或作为单行

RoleInfo roleInfo = roleGroupOmniProfiles.Roles.Where(x => x.Value.RoleID == 15).FirstOrDefault().Value;

VB

If (Not (roleGroupOmniProfiles) Is Nothing) Then
    For Each role As KeyValuePair(Of String, RoleInfo) In roleGroupOmniProfiles.Roles
        Label1.Text += role.Key + " | " + role.Value.RoleName + "<br>"
    Next
End If

<强>更新

要检查用户是否属于某个群组,您可以使用此

DotNetNuke.Entities.Users.UserInfo user = DotNetNuke.Entities.Users.UserController.GetUserByName("userName");
bool isInGroup = roleGroupOmniProfiles.Roles.Keys.Any(role => user.IsInRole(role)); 
相关问题