Получить RoleName из RoleGroup по идентификатору пользователя

У меня есть RoleGroup с некоторыми Roles в этом. Пользователь может принадлежать только к одной из этих ролей. Как бы я получить RoleName на основе RoleGroup к которому принадлежит пользователь? Есть идеи?

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

Проблема здесь

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

1 ответ

Решение

roleGroupOmniProfiles содержит коллекцию KeyValuePair<string, RoleInfo>, так что вы можете зациклить их, как показано ниже.

Но я не уверен, что вы можете получить RoleName из RoleGroup от 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)); 
Другие вопросы по тегам