Beispiel #1
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());
        }
Beispiel #2
0
        public async Task <Operation> DeleteAsync(string id)
        {
            var operation = await FindByIdAsync(id);

            if (!operation.Succeeded)
            {
                return(operation);
            }

            var deleted = await _tenantManager.DeleteAsync(operation.Data);

            return(deleted.ToOperation());
        }
Beispiel #3
0
        public async Task Should_Delete_UserAccount_When_Tenant_Deleted()
        {
            var tenant = new Tenant("test-tenant-name", "test-tenant-name");
            await _tenantManager.CreateAsync(tenant);

            var user = new User
            {
                TenantId         = tenant.Id,
                UserName         = "******",
                Name             = "TestTenantUser",
                Surname          = "TestTenantUser",
                EmailAddress     = "*****@*****.**",
                IsEmailConfirmed = true,
                Password         = "******" //123qwe
            };

            using (var uow = _unitOfWorkManager.Begin())
            {
                await _userManager.CreateAsync(user);

                await _unitOfWorkManager.Current.SaveChangesAsync();

                await uow.CompleteAsync();
            }

            UsingDbContext(
                context =>
            {
                var userAccount = context.UserAccounts.First(u => u.UserName == "TestTenantUser");
                userAccount.IsDeleted.ShouldBe(false);
            });

            using (var uow = _unitOfWorkManager.Begin())
            {
                await _tenantManager.DeleteAsync(tenant);

                await _unitOfWorkManager.Current.SaveChangesAsync();

                await uow.CompleteAsync();
            }

            UsingDbContext(
                context =>
            {
                var userAccount = context.UserAccounts.First(u => u.UserName == "TestTenantUser");
                userAccount.IsDeleted.ShouldBe(true);
            });
        }
Beispiel #4
0
        public async Task DeleteTenant(EntityDto input)
        {
            var tenant = await TenantManager.GetByIdAsync(input.Id);

            await TenantManager.DeleteAsync(tenant);
        }
Beispiel #5
0
        /// <summary>
        /// 删除租户
        /// </summary>
        /// <param name="id">租户ID</param>
        public async Task DeleteTenant(int id)
        {
            var tenant = await TenantManager.GetByIdAsync(id);

            CheckErrors(await TenantManager.DeleteAsync(tenant));
        }