Получить 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));