public async static Task Main(string[] args) { var host = CreateHostBuilder(args).Build(); using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; var loggerFactory = services.GetRequiredService <ILoggerFactory>(); var logger = loggerFactory.CreateLogger("app"); try { var userManager = services.GetRequiredService <UserManager <IdentityUser> >(); var roleManager = services.GetRequiredService <RoleManager <IdentityRole> >(); await DefaultRoles.SeedAsync(userManager, roleManager); await DefaultUsers.SeedBasicUserAsync(userManager, roleManager); await DefaultUsers.SeedSuperAdminAsync(userManager, roleManager); logger.LogInformation("Finished Seeding Default Data"); logger.LogInformation("Application Starting"); } catch (Exception ex) { logger.LogWarning(ex, "An error occurred seeding the DB"); } } host.Run(); }
public async Task <IActionResult> Update(string id, ManageUserRolesViewModel manageUserRolesVM) { var user = await _userManager.FindByIdAsync(id); var roles = await _userManager.GetRolesAsync(user); var result = await _userManager.RemoveFromRolesAsync(user, roles); result = await _userManager.AddToRolesAsync(user, manageUserRolesVM.UserRoles.Where( x => x.Selected).Select(y => y.RoleName)); //reapply roles and permissions for superAdmin in case any other admin tries to change its permissions //this can be changed or deleted depending on the business logic var currentUser = await _userManager.GetUserAsync(User); await _singInManager.RefreshSignInAsync(currentUser); await DefaultUsers.SeedSuperAdminAsync(_userManager, _roleManager); return(RedirectToAction(nameof(Index), new { userId = id })); }