예제 #1
0
        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");
            }
        }
예제 #2
0
        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);
            }
        }