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
UserManagerstuff in Identity tends to confuse people. Ultimately, users are still just aDbSeton your context, so you can use your context like querying for any other object:EDIT Forgot that
IdentityUser.RolesreferencesIdentityUserRoleinstead ofIdentityRoledirectly. So you need to get the role first, and then use the role's id to query into your users.