How can I get a list of users including the role name per user? My app has the default tables of an MVC Project.
I'm able to retrieve all users using Identity 2.1 like this:
Model
public class GetVendorViewModel
{
public IList<ApplicationUser> Vendors { get; set; }
}
Controller
public ActionResult Index()
{
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var roleStore = new RoleStore<IdentityRole>(ac);
var roleManager = new RoleManager<IdentityRole>(roleStore);
var vendor = roleManager.FindByName("Vendor").Users;
var model = new GetVendorViewModel { Vendors = vendor };
return View("~/Views/User/Administrator/Vendor/Index.cshtml", model);
}
Right now is returning this:
[
{
UserId: "4f9ed316-a852-45a9-93a8-a337a37b1c74",
RoleId: "a17bb59c-285a-43f9-b5ad-65f46f94bb4f"
}
]
This is correct but I need to display the user information such as name, email, username etc.
I would like to return a json object like this:
[
{
UserId: "4f9ed316-a852-45a9-93a8-a337a37b1c74",
RoleId: "a17bb59c-285a-43f9-b5ad-65f46f94bb4f"
RoleName: "Administrator"
User: {
name:"Joe Doe",
email:"[email protected]",
...
}
},
{
...
}
]
RoleName is in the table AspNetRoles.
UserId and RoleId its being query from AspNetUserRoles.
Any clues?
The
UserManager
stuff in Identity tends to confuse people. Ultimately, users are still just aDbSet
on your context, so you can use your context like querying for any other object:EDIT Forgot that
IdentityUser.Roles
referencesIdentityUserRole
instead ofIdentityRole
directly. So you need to get the role first, and then use the role's id to query into your users.