public async Task <IActionResult> Register([FromBody] RegisterViewModel model) { model.TenantId = model.TenantId.ToLower(); if (ModelState.IsValid) { var tenant = await _tenantService.GetTenantWithIgnoredQueries(model.TenantId); if (tenant == null) { tenant = new Tenant { Id = model.TenantId, HostName = model.HostName, Lang = model.Lang }; await _tenantService.AddTenant(tenant); } else { ModelState.AddModelError("TenantId", _localizer["TenantExists"]); return(BadRequest(Errors.GetErrorList(ModelState))); } var user = new ApplicationUser { Id = Guid.NewGuid().ToString(), UserName = $"{model.Email}_{model.TenantId}", Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, TenantId = model.TenantId, UserDetail = new UserDetail { AuthorityPercent = 0, InitialAuthorityPercent = 0, TenantId = model.TenantId, LanguagePreference = model.Lang } }; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { await _userService.AssignRoleToUser(user.Id, "Admin", model.TenantId); await SendEmailConfirmLink(user, model.HostName); return(Ok()); } AddErrors(result); } // If we got this far, something failed, redisplay form return(BadRequest(Errors.GetErrorList(ModelState))); }
public IActionResult Create([FromBody] TenantDto tenant) { if (tenant == null) { return(BadRequest()); } _tenantService.AddTenant(tenant); return(new ObjectResult(tenant)); }
public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { return(Page()); } PrepareDomainName(); var tenantExists = await _tenantService.TenantExists(Store.Tenant.Domain); if (tenantExists) { ModelState.AddModelError("Store.Tenant.Domain", $"Store with domain: {Store.Tenant.Domain} already exists."); return(Page()); } var userExists = await _userService.UserExists(Store.User.Email); if (userExists) { ModelState.AddModelError("Store.User.Email", $"User with email: {Store.User.Email} already exists."); return(Page()); } var addTenantResult = await _tenantService.AddTenant(Store.Tenant); if (addTenantResult.Success && addTenantResult.Tenant != null) { var registerAccountResult = await _userService.RegisterAccount(addTenantResult.Tenant.Id, Store.User); if (!registerAccountResult.Success) { await _tenantService.DeleteTenant(addTenantResult.Tenant); return(RedirectToPage("/CreateStoreFail", new { error = registerAccountResult.Error })); } } else { return(RedirectToPage("/CreateStoreFail", new { error = addTenantResult.Error })); } return(RedirectToPage("/CreateStoreSuccess")); }
public async Task <IActionResult> PostTenant([FromBody] Tenant tenant) { // only admins can create new tenants if (!User.IsInRole(ADMIN_ROLE)) { return(Unauthorized()); } try { await _tenantService.AddTenant(ref tenant); } catch (Exception) { return(UnprocessableEntity()); } return(CreatedAtAction("GetTenant", new { id = tenant.TenantId }, tenant)); }
public async Task Should_Add_Tenant_Setting_And_AdminRole() { var tenant = new Tenant { Id = "test2", InActive = false, HostName = "test2.decidehub.com" }; await _tenantService.AddTenant(tenant); var checkTenant = _tenantsDbContext.Tenants.FirstOrDefault(x => x.Id == tenant.Id); Assert.NotNull(checkTenant); var settings = _context.Settings.Where(x => x.TenantId == tenant.Id); Assert.True(settings.Any()); var roles = _context.Roles.IgnoreQueryFilters().Where(x => x.TenantId == tenant.Id); Assert.True(roles.Count() == 1); }