Create an Admin Super User in Asp.Net Mvc 6

Viewed 4566

I am trying to code for creating the default admin super user from the Startup.cs in Asp.Net Mvc 6, I can add just the all the user roles, but I cannot automatically assign the admin user into the table of AspNetUsers. Can some experts help me to correct the problem as my embedded code below:

private async Task CreateRoles(ApplicationDbContext context, IServiceProvider serviceProvider)
{
    var userManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
    var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
    // First, Creating User role as each role in User Manager  
    List<IdentityRole> roles = new List<IdentityRole>();
    roles.Add(new IdentityRole {Name = "Admin", NormalizedName = "ADMINISTRATOR"});
    roles.Add(new IdentityRole { Name = "Member", NormalizedName = "MEMBER" });
    roles.Add(new IdentityRole { Name = "Librarian", NormalizedName = "LIBRARIAN" });
    roles.Add(new IdentityRole { Name = "Borrower", NormalizedName = "BORROWER" });
    roles.Add(new IdentityRole { Name = "Reader", NormalizedName = "READER" });

   //Then, the machine added Default User as the Admin user role
    foreach (var role in roles)
    {
        var roleExit = await roleManager.RoleExistsAsync(role.Name);
        if (!roleExit)
        {
            context.Roles.Add(role);
            context.SaveChanges();
        }
    }
    //Next, I create an Admin Super User who will maintain the LMS website panel
    var userAdmin = new ApplicationUser()
    {
        UserName = "TrueMan",
        Email = "alpha@lms.com",
    };
    string userPWD = "Alpha@Mega";
    var chkUser = userManager.AddPasswordAsync(userAdmin, userPWD);
    if (chkUser.IsFaulted)
    {
        await roleManager.CreateAsync(new IdentityRole { Name = "Admin", NormalizedName = "ADMINISTRATOR" });
    }
    userAdmin = await userManager.FindByNameAsync("TrueMan");
    await userManager.AddToRoleAsync(userAdmin, "Admin");
    //await userManager.AddToRoleAsync(user, "Admin");
}
4 Answers
Related