Adding Role dynamically in new VS 2013 Identity UserManager

I created a new MVC application in the new VS2013 IDE. I added the following to the Login Action on the AccountController as I wanted to create a default user dynamically:

var admin = new ApplicationUser() { UserName = "administrator" };
var result = UserManager.Create(admin, "administrator");

This works great, I then wanted to put this default user into a new default role:

user = UserManager.FindByName("administrator");
var roleresult = UserManager.AddToRole(user.Id,"admin");

The second line errors because obviously it can’t find the role “admin” as it doesn’t exist yet, but I can’t find a relevant method on the UserManager to do so. Where can I find the method to add roles dynamically?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

Here is how I did it. I have a Dictionary userRoles with preauthorized {userName, role} key – value pairs :

private void setRoles()
{
    using(var rm = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext())))
    using(var um = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
        foreach (var item in userRoles)
        {
            if (!rm.RoleExists(item.Value))
            {
                var roleResult = rm.Create(new IdentityRole(item.Value));
                if (!roleResult.Succeeded)
                    throw new ApplicationException("Creating role " + item.Value + "failed with error(s): " + roleResult.Errors);
            }
            var user = um.FindByName(item.Key);
            if (!um.IsInRole(user.Id, item.Value))
            {
                var userResult = um.AddToRole(user.Id, item.Value);
                if (!userResult.Succeeded)
                    throw new ApplicationException("Adding user '" + item.Key + "' to '" + item.Value + "' role failed with error(s): " + userResult.Errors);
            }
        }
}


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x