public void transform_for_tenants() { var user1 = new MultiTenantUser() { FirstName = "Jeremy", LastName = "Miller" }; var user2 = new MultiTenantUser { FirstName = "Corey", LastName = "Kaylor" }; var user3 = new MultiTenantUser { FirstName = "Tim", LastName = "Cools", UserName = "******" }; theStore.BulkInsert("Purple", new MultiTenantUser[] { user1, user2 }); theStore.BulkInsert("Orange", new MultiTenantUser[] { user3 }); theStore.Transform.Tenant <MultiTenantUser>("default_username", "Purple"); using (var query = theStore.QuerySession("Purple")) { query.Load <MultiTenantUser>(user1.Id).UserName.ShouldBe("jeremy.miller"); } using (var query = theStore.QuerySession("Orange")) { query.Load <MultiTenantUser>(user3.Id).UserName.ShouldBe("NotTransformed"); } }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); if (ModelState.IsValid) { var tenant = new IdentityTenant() { Name = Input.TeamName, Domain = Input.Domain, }; var result = await _tenantManager.CreateAsync(tenant); if (result.Succeeded) { var user = new MultiTenantUser { UserName = Input.Email, Email = Input.Email, TenantId = tenant.Id, }; result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { userId = user.Id, code = code }, protocol: Request.Scheme); await _emailSender.SendEmailAsync(Input.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); await _signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } } else { await _tenantManager.DeleteAsync(tenant); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } // If we got this far, something failed, redisplay form return(Page()); }
public void TestShopHierarchicalFilterWithIncludeOk(int shopKey, string districtManagerId, string stockName) { //SETUP var options = SqliteInMemory.CreateOptions <MultiTenantDbContext>(); using (var context = new MultiTenantDbContext(options, new MockGetClaimsProvider("user-id", 0, "manager-id"))) { context.Database.EnsureCreated(); var mUser = new MultiTenantUser { UserId = "manager-id", IsDistrictManager = true }; var shop1 = new Shop { Name = "shop1", DistrictManager = mUser }; var shop2 = new Shop { Name = "shop2" }; context.AddRange(shop1, shop2); context.SaveChanges(); var stock1 = new StockInfo { Name = shop1.Name, NumInStock = 10, AtShop = shop1, DistrictManagerId = shop1.DistrictManagerId }; var stock2 = new StockInfo { Name = shop2.Name, NumInStock = 10, AtShop = shop2, DistrictManagerId = shop2.DistrictManagerId }; context.AddRange(stock1, stock2); context.SaveChanges(); } using (var context = new MultiTenantDbContext(options, new MockGetClaimsProvider("user-id", shopKey, districtManagerId))) { //ATTEMPT var filtered = context.CurrentStock.Include(x => x.AtShop).ToList(); //VERIFY filtered.Count.ShouldEqual(1); filtered.Single().Name.ShouldEqual(stockName); } }