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>(); try { // Seed Default User var userManager = services.GetRequiredService <UserManager <User> >(); var roleManager = services.GetRequiredService <RoleManager <IdentityRole> >(); await ApplicationDbInitializer.SeedRolesAsync(userManager, roleManager); await ApplicationDbInitializer.SeedDefaultUser(userManager, roleManager); await ApplicationDbInitializer.SeedDefaultModeratorUser(userManager, roleManager); await ApplicationDbInitializer.SeedAdministratorUser(userManager, roleManager); } catch (System.Exception ex) { var logger = loggerFactory.CreateLogger <Program>(); logger.LogError(ex, "An error occurred when seeding the database."); } } host.Run(); }
public async Task <BaseApiResponse> UpdateUserRoles(UserRolesForEditDto userRolesForEditDto, ClaimsPrincipal claimsPrincipal) { try { if (userRolesForEditDto.UserId == null) { return(BaseApiResponseHelper.GenerateApiResponse(true, "update roles for user", null, new List <string> { $"User ID is null." })); } var user = await _userManager.FindByIdAsync(userRolesForEditDto.UserId); if (user == null) { return(BaseApiResponseHelper.GenerateApiResponse(true, "update roles for user", null, new List <string> { $"User ID {userRolesForEditDto.UserId} did not match any users." })); } var roles = await _userManager.GetRolesAsync(user); var result = await _userManager.RemoveFromRolesAsync(user, roles); // In case we forgot to select any roles for user, we will add this user to role user by default. var isUserInAnyRoles = userRolesForEditDto.UserRoles.Any(x => x.Selected == true); if (!isUserInAnyRoles) { result = await _userManager.AddToRolesAsync(user, new List <string> { Authorization.DEFAULT_ROLE.ToString() }); } else { result = await _userManager.AddToRolesAsync(user, userRolesForEditDto.UserRoles.Where(x => x.Selected).Select(y => y.RoleName)); } var currentUser = await _userManager.GetUserAsync(claimsPrincipal); await _signInManager.RefreshSignInAsync(currentUser); await ApplicationDbInitializer.SeedAdministratorUser(_userManager, _roleManager); return(BaseApiResponseHelper.GenerateApiResponse(true, "Update roles for user", null, null)); } catch (Exception ex) { return(BaseApiResponseHelper.GenerateApiResponse(false, "update roles for user", null, new List <string> { $"{ex.Message}." })); } }