/// <summary> /// Adds some default values to the Database /// </summary> public void SeedData() { using var scope = _scopeFactory.CreateScope(); var dbInitializer = scope.ServiceProvider.GetRequiredService <DbInitializerService>(); var createAdminResult = dbInitializer.CreateAdminUserAsync().Result; if (createAdminResult == (null, IdentityResult.Failed())) { throw new InvalidOperationException(createAdminResult.Item2.DumpErrors()); } using var db = scope.ServiceProvider.GetRequiredService <BehlogContext>(); if (!db.Roles.Any()) { db.Add(new Role(Consts.Role_Admin)); db.SaveChanges(); } var adminUser = createAdminResult.Item1; var defaultLanguage = _languageSvc .CreateDefaultLanguagesAndReturnDefaultLanguageAsync() .Result; dbInitializer.CreateDefaultWebsite( db, adminUser, defaultLanguage.Adapt <Language>() ); }
public async Task <(User, IdentityResult)> CreateAdminUserAsync() { var adminUser = await _userManager.FindByNameAsync(AdminUserSeedInfo.Username); if (adminUser != null) { _logger.LogInformation($"{AdminUserSeedInfo.Username} already existed."); return(adminUser, IdentityResult.Success ); } var adminRole = await _roleManager.FindByNameAsync(AdminUserSeedInfo.RoleName); if (adminRole != null) { _logger.LogInformation($"{AdminUserSeedInfo.RoleName} role already existed."); } else { adminRole = new Role(AdminUserSeedInfo.RoleName); var roleResult = await _roleManager.CreateAsync(adminRole); if (roleResult == IdentityResult.Failed()) { _logger.LogError($"'{adminRole.Name}' role creating has failed. {roleResult.DumpErrors()}"); return(null, IdentityResult.Failed() ); } } adminUser = new User { UserName = AdminUserSeedInfo.Username, Email = AdminUserSeedInfo.Email, EmailConfirmed = true, RegisterDate = _dateSvc.UtcNow(), Title = AdminUserSeedInfo.Title, LockoutEnabled = true, Status = UserStatus.Enabled }; var result = await _userManager.CreateAsync(adminUser, AdminUserSeedInfo.Password); if (result == IdentityResult.Failed()) { _logger.LogError($"'{AdminUserSeedInfo.Username}; user creation has failed. {result.DumpErrors()}"); return(null, IdentityResult.Failed() ); } var setLockoutResult = await _userManager.SetLockoutEnabledAsync(adminUser, enabled : false); if (setLockoutResult == IdentityResult.Failed()) { _logger.LogError($"'{AdminUserSeedInfo.Username}' setLockout on user has failed. {setLockoutResult.DumpErrors()}"); return(null, IdentityResult.Failed() ); } var addRoleResult = await _userManager.AddToRoleAsync(adminUser, AdminUserSeedInfo.RoleName); if (addRoleResult == IdentityResult.Failed()) { _logger.LogError($"Adding user:'******' to role:'{AdminUserSeedInfo.RoleName}' has failed. {addRoleResult.DumpErrors()}"); return(null, IdentityResult.Failed() ); } return( adminUser, IdentityResult.Success ); }