Пример #1
0
        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)));
        }
Пример #2
0
        public IActionResult Create([FromBody] TenantDto tenant)
        {
            if (tenant == null)
            {
                return(BadRequest());
            }

            _tenantService.AddTenant(tenant);

            return(new ObjectResult(tenant));
        }
Пример #3
0
        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"));
        }
Пример #4
0
        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);
        }