Получить все роли для определенного пользователя, который не зарегистрирован (не текущий пользователь) - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь написать страницу администрирования основных пользователей в ASP.NET Identity 2 и хочу получить роли для пользователя.Тем не менее, это не текущий пользователь, и я только нашел, как получить роли для текущего пользователя (User.Identity).

Я пытаюсь взять данного пользователя по идентификатору, который я передаю (который являетсяих идентификатор из ASPNetUsers) и узнать, какие роли у них есть (в базе данных есть соединение ролей с ASPNetUserRoles, но передается только таблица ролей)

Я не вижу способа присоединиться к этой таблице.

Мой код psuedo, который не работает, выглядит примерно так:

    var myRoles = await db.Roles.Where(s => s.Users.First(u => u.UserId == id)).ToListAsync();

Кто-нибудь знает, что написать запрос с заданным идентификатором пользователя, чтобы получить все назначенные ему роли?

1 Ответ

0 голосов
/ 24 января 2019

Мне удалось получить это с помощью кода:

List<IdentityUserRole> myRoles =db.Users.Where(s => s.Id == id).FirstOrDefault().Roles.ToList();

Что меня смущает, так это то, что он не возвращает роль, а IdentityUserRole.

Однако я смог использовать следующий код:

[HttpGet]
    public async Task<ActionResult> Roles(string id)
    {

        List<IdentityRole> allroles = db.Roles.ToList();


        var userrolemodel = new UserRoleViewModel()
        {
            AlllRoles = allroles,

            Id = id
        };
        return View(userrolemodel);

    }

, а затем

foreach (var org in Model.AlllRoles)
{
    var ischecked = Model.AlllRoles.First(s => s.Id == org.Id).Users.Any(s => s.UserId == Model.Id);
    <input type="checkbox" value="@org.Name" checked="@ischecked" name="orgs"/>
    @org.Name
    <br/>
}

Не невероятно эффективный, но достаточно простой для легкого чтения.

...