public async Task <ActionResult> CreateDatabase(string database) { await _databaseBuilder.createModulesDatabaseAsync(database); return(Ok()); }
public async Task <IActionResult> Register(IndexViewModel mod) { Register registerModel = mod.Register; Organization organizationExist = await _organizationRepository.OraganizationExist(registerModel.DatabaseName); if (organizationExist == null) { var user = new ApplicationUser { Email = registerModel.Email, DatabaseName = registerModel.DatabaseName, Country = registerModel.Country, Language = registerModel.Language, UserName = registerModel.UserName, Organization = new Organization { Name = registerModel.DatabaseName, Email = registerModel.Email } }; var result = await _userManager.CreateAsync(user, registerModel.Password); if (result.Succeeded) { List <Task> tasks = new List <Task>(); var roleAdmin = "Administrator"; var roleEmployee = "Employee"; await _management.AddRoleToUserAsync(roleAdmin, user); await _management.AddRoleToUserAsync(roleEmployee, user); await _userManager.AddClaimAsync(user, new Claim("organization", user.DatabaseName)); await _userManager.AddClaimAsync(user, new Claim("organizationId", user.OrganizationId)); muserLogger.LogInformation("A user with a specifc roles : " + roleAdmin + " has Been Created"); var res = await _signInManager.PasswordSignInAsync(user.UserName, registerModel.Password, true, false); if (res.Succeeded) { tasks.Add(_databaseBuilder.createModulesDatabaseAsync(registerModel.DatabaseName)); tasks.Add(Task.Run(() => _authenticationProvider.AddScheme(new AuthenticationScheme(registerModel.DatabaseName, registerModel.DatabaseName, typeof(CookieAuthenticationHandler))))); ; await Task.WhenAll(tasks); using (var scope = _service.CreateScope()) { var _sysServices = scope.ServiceProvider.GetRequiredService <IServiceCollection>(); var shema = _sysServices.AddAuthentication() .AddCookie(registerModel.DatabaseName, o => { o.ExpireTimeSpan = TimeSpan.FromHours(1); o.LoginPath = new PathString("/store/{OrganizationName}"); o.Cookie.Name = registerModel.DatabaseName + " CustomerCookie"; o.SlidingExpiration = true; }); } return(RedirectToAction("System", "App")); } } var errors = result.Errors.ToList(); foreach (var el in errors) { ModelState.AddModelError("", el.Code); } } else { ModelState.AddModelError("", "This Database Name is used"); } return(View()); }