/// <summary> /// Initializes a new instance of the <see cref="HelpDeskControllerBase"/> class using the specified parameters. /// </summary> /// <param name="dbContext">The database context used.</param> /// <param name="httpContextAccessor">An object used to access the current user's claims principal.</param> protected HelpDeskControllerBase(ApplicationDbContext dbContext, IOptions <IdentityInitializerSettings> identitySettings, IHttpContextAccessor httpContextAccessor, ISysEventLogger sysLogger) { Db = dbContext; EventLogger = sysLogger; IdentitySettings = identitySettings.Value; _caller = httpContextAccessor.HttpContext.User; CurrentThread.CurrentCulture = FrenchCulture; CurrentThread.CurrentUICulture = FrenchCulture; Db.SysEvent += Db_SysEvent; EventLogger.Logged += AfterEventLoggedAsync; }
async Task CreateOrUpdateUsersAsync(UserManager <AppUser> userManager, ApplicationDbContext context, IdentityInitializerSettings settings) { var userName = settings.AdminUserName; var appUser = context.Users.SingleOrDefault(u => u.UserName == userName); var userId = !string.IsNullOrWhiteSpace(settings.AdminId) ? settings.AdminId : System.Guid.NewGuid().ToString().ToLower(); if (appUser == null) { appUser = new AppUser { Id = userId, Email = userName, IsAdministrator = true, UserName = userName, }; var result = await userManager.CreateAsync(appUser, settings.AdminPassword); if (result.Succeeded) { await context.Employees.AddAsync(new Employee { UserId = appUser.Id }); await context.SaveChangesAsync(); } } }
internal IdentityInitializer(UserManager <AppUser> userManager, ApplicationDbContext context, IdentityInitializerSettings settings) { if (!context.Users.Any()) { CreateOrUpdateUsersAsync(userManager, context, settings).Wait(); } if (!context.Categories.Any()) { context.GetOrCreateCategoriesAsync().Wait(); } if (!context.Statuses.Any()) { context.GetOrCreateStatusesAsync().Wait(); } if (!context.Sections.Any()) { context.GetOrCreateSectionsAsync().Wait(); } }