public async Task <ActionResult> CreateAdmin(AdminViewModel viewModel) { if (viewModel.AdminPassword != viewModel.ConfirmPassword) { ViewBag.Languages = new SelectList(SupportedCultures.Cultures.Select(x => new { Value = x.TwoLetterISOLanguageName, Text = x.DisplayName }).ToList(), "Value", "Text"); ModelState.AddModelError("ConfirmPassword", "Password does not match"); return(View(viewModel)); } SetupHelper.InitilizeDatabase(); if (SetupHelper.IsDbCreateComplete == true && SetupHelper.IsAdminCreateComplete == false) { if (!ModelState.IsValid) { ViewBag.Languages = new SelectList(SupportedCultures.Cultures.Select(x => new { Value = x.TwoLetterISOLanguageName, Text = x.DisplayName }).ToList(), "Value", "Text"); return(View(viewModel)); } var optionBuilder = new DbContextOptionsBuilder <NccDbContext>(); SupportedDatabases supportedDatabases = TypeConverter.TryParseDatabaseEnum(SetupHelper.SelectedDatabase); switch (supportedDatabases) { case SupportedDatabases.MSSQL: optionBuilder.UseSqlServer(SetupHelper.ConnectionString, opts => opts.MigrationsAssembly("NetCoreCMS.Framework")); break; case SupportedDatabases.MsSqlLocalStorage: break; case SupportedDatabases.MySql: optionBuilder.UseMySql(SetupHelper.ConnectionString, opts => opts.MigrationsAssembly("NetCoreCMS.Framework")); break; case SupportedDatabases.SqLite: optionBuilder.UseSqlite(SetupHelper.ConnectionString, opts => opts.MigrationsAssembly("NetCoreCMS.Framework")); break; case SupportedDatabases.PgSql: break; } var nccDbConetxt = new NccDbContext(optionBuilder.Options); var userStore = new NccUserStore(nccDbConetxt); var identityOptions = Options.Create(new IdentityOptions()); var passwordHasher = new PasswordHasher <NccUser>(); var userValidatorList = new List <UserValidator <NccUser> >(); var passwordValidatorList = new List <PasswordValidator <NccUser> >(); var lookupNormalizer = new UpperInvariantLookupNormalizer(); var identityErrorDescriber = new IdentityErrorDescriber(); var logger = _loggerFactory.CreateLogger <UserManager <NccUser> >(); var authOption = new AuthenticationOptions(); var options = Options.Create <AuthenticationOptions>(authOption); var scheme = new AuthenticationSchemeProvider(options); var userManager = new UserManager <NccUser>( userStore, identityOptions, passwordHasher, userValidatorList, passwordValidatorList, lookupNormalizer, identityErrorDescriber, GlobalContext.App.ApplicationServices, logger ); var roleStore = new NccRoleStore(nccDbConetxt); var roleValidatorList = new List <RoleValidator <NccRole> >(); var roleLogger = _loggerFactory.CreateLogger <RoleManager <NccRole> >(); var roleManager = new RoleManager <NccRole>( roleStore, roleValidatorList, new UpperInvariantLookupNormalizer(), new IdentityErrorDescriber(), roleLogger ); var claimsFactory = new UserClaimsPrincipalFactory <NccUser, NccRole>(userManager, roleManager, identityOptions); var signInLogger = _loggerFactory.CreateLogger <SignInManager <NccUser> >(); var signInManager = new NccSignInManager <NccUser>(userManager, _httpContextAccessor, claimsFactory, identityOptions, signInLogger, scheme); //nccDbConetxt.Database.Migrate(); var setupInfo = new WebSiteInfo() { SiteName = viewModel.SiteName, Tagline = viewModel.Tagline, AdminPassword = viewModel.AdminPassword, AdminUserName = viewModel.AdminUserName, ConnectionString = SetupHelper.ConnectionString, Database = TypeConverter.TryParseDatabaseEnum(SetupHelper.SelectedDatabase), Email = viewModel.Email, Language = viewModel.Language, TablePrefix = viewModel.TablePrefix }; //SetupHelper.RegisterAuthServices(supportedDatabases); var admin = await SetupHelper.CreateSuperAdminUser(nccDbConetxt, userManager, roleManager, signInManager, setupInfo); if (admin != null) { SetupHelper.IsAdminCreateComplete = true; SetupHelper.Language = viewModel.Language; SetupHelper.SaveSetup(); SetupHelper.CrateNccWebSite(nccDbConetxt, setupInfo); await SetupHelper.SaveBasicData(admin, nccDbConetxt, userManager, roleManager, signInManager, setupInfo); return(Redirect("/Home/SetupSuccess")); } else { TempData["ErrorMessage"] = "Could not create Admin user and Roles."; return(Redirect("/Home/Error")); } } TempData["ErrorMessage"] = "Setup already completed."; return(Redirect("/Home/Error")); }
public async Task <ActionResult> CreateAdmin(AdminViewModel viewModel) { SetupHelper.InitilizeDatabase(); var optionBuilder = new DbContextOptionsBuilder <NccDbContext>(); DatabaseEngine dbe = TypeConverter.TryParseDatabaseEnum(SetupHelper.SelectedDatabase); switch (dbe) { case DatabaseEngine.MSSQL: optionBuilder.UseSqlServer(SetupHelper.ConnectionString, opts => opts.MigrationsAssembly("NetCoreCMS.Framework")); break; case DatabaseEngine.MsSqlLocalStorage: break; case DatabaseEngine.MySql: optionBuilder.UseMySql(SetupHelper.ConnectionString, opts => opts.MigrationsAssembly("NetCoreCMS.Framework")); break; case DatabaseEngine.SqLite: optionBuilder.UseSqlite(SetupHelper.ConnectionString, opts => opts.MigrationsAssembly("NetCoreCMS.Framework")); break; case DatabaseEngine.PgSql: break; } var nccDbConetxt = new NccDbContext(optionBuilder.Options); var userStore = new NccUserStore(nccDbConetxt); var identityOptions = Options.Create(new IdentityOptions()); var passwordHasher = new PasswordHasher <NccUser>(); var userValidatorList = new List <UserValidator <NccUser> >(); var passwordValidatorList = new List <PasswordValidator <NccUser> >(); var lookupNormalizer = new UpperInvariantLookupNormalizer(); var identityErrorDescriber = new IdentityErrorDescriber(); var logger = _loggerFactory.CreateLogger <UserManager <NccUser> >(); var userManager = new UserManager <NccUser>( userStore, identityOptions, passwordHasher, userValidatorList, passwordValidatorList, lookupNormalizer, identityErrorDescriber, GlobalConfig.App.ApplicationServices, logger ); var roleStore = new NccRoleStore(nccDbConetxt); var roleValidatorList = new List <RoleValidator <NccRole> >(); var roleLogger = _loggerFactory.CreateLogger <RoleManager <NccRole> >(); var roleManager = new RoleManager <NccRole>( roleStore, roleValidatorList, new UpperInvariantLookupNormalizer(), new IdentityErrorDescriber(), roleLogger, _httpContextAccessor ); var claimsFactory = new UserClaimsPrincipalFactory <NccUser, NccRole>(userManager, roleManager, identityOptions); var signInLogger = _loggerFactory.CreateLogger <SignInManager <NccUser> >(); var signInManager = new NccSignInManager <NccUser>(userManager, _httpContextAccessor, claimsFactory, identityOptions, signInLogger); //nccDbConetxt.Database.Migrate(); var setupInfo = new WebSiteInfo() { SiteName = viewModel.SiteName, Tagline = viewModel.Tagline, AdminPassword = viewModel.AdminPassword, AdminUserName = viewModel.AdminUserName, ConnectionString = SetupHelper.ConnectionString, Database = TypeConverter.TryParseDatabaseEnum(SetupHelper.SelectedDatabase), Email = viewModel.Email }; var admin = await SetupHelper.CreateSuperAdminUser(userManager, roleManager, signInManager, setupInfo); SetupHelper.RegisterAuthServices(); SetupHelper.IsAdminCreateComplete = true; SetupHelper.SaveSetup(); SetupHelper.CrateNccWebSite(nccDbConetxt, setupInfo); return(Redirect("/Home/SetupSuccess")); }