Ejemplo n.º 1
0
        public ActionResult AddPost(TenantAddViewModel viewModel)
        {
            if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("You don't have permission to create tenants.")))
            {
                return(new HttpUnauthorizedResult());
            }

            if (!IsExecutingInDefaultTenant())
            {
                return(new HttpUnauthorizedResult());
            }

            if (_tenantService.GetTenants().Any(tenant => string.Equals(tenant.Name, viewModel.Name, StringComparison.OrdinalIgnoreCase)))
            {
                ModelState.AddModelError("Name", T("A tenant with the same name already exists.", viewModel.Name).Text);
            }

            // Ensure tenants name are valid.
            if (!String.IsNullOrEmpty(viewModel.Name) && !Regex.IsMatch(viewModel.Name, @"^[a-zA-Z]\w*$"))
            {
                ModelState.AddModelError("Name", T("Invalid tenant name. Must contain characters only and no spaces.").Text);
            }

            if (!string.Equals(viewModel.Name, "default", StringComparison.OrdinalIgnoreCase) && string.IsNullOrWhiteSpace(viewModel.RequestUrlHost) && string.IsNullOrWhiteSpace(viewModel.RequestUrlPrefix))
            {
                ModelState.AddModelError("RequestUrlHostRequestUrlPrefix", T("RequestUrlHost and RequestUrlPrefix can not be empty at the same time.").Text);
            }

            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            try {
                _tenantService.CreateTenant(
                    new ShellSettings {
                    Name                 = viewModel.Name,
                    RequestUrlHost       = viewModel.RequestUrlHost,
                    RequestUrlPrefix     = viewModel.RequestUrlPrefix,
                    DataProvider         = viewModel.DataProvider,
                    DataConnectionString = viewModel.DatabaseConnectionString,
                    DataTablePrefix      = viewModel.DatabaseTablePrefix,
                    State                = TenantState.Uninitialized,
                    Themes               = viewModel.Themes.Where(x => x.Checked).Select(x => x.ThemeId).ToArray(),
                    Modules              = viewModel.Modules.Where(x => x.Checked).Select(x => x.ModuleId).ToArray()
                });

                Services.Notifier.Success(T("Tenant '{0}' was created successfully.", viewModel.Name));
                return(RedirectToAction("Index"));
            }
            catch (ArgumentException ex) {
                Logger.Error(ex, "Error while creating tenant.");
                Services.Notifier.Error(T("Tenant creation failed with error: {0}.", ex.Message));
                return(View(viewModel));
            }
        }
Ejemplo n.º 2
0
        public ActionResult AddPOST(TenantAddViewModel viewModel)
        {
            if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Couldn't create tenant")))
            {
                return(new HttpUnauthorizedResult());
            }

            if (!EnsureDefaultTenant())
            {
                return(new HttpUnauthorizedResult());
            }

            if (_tenantService.GetTenants().Any(tenant => string.Equals(tenant.Name, viewModel.Name, StringComparison.OrdinalIgnoreCase)))
            {
                ModelState.AddModelError("Name", T("A tenant with the same name already exists.", viewModel.Name).Text);
            }

            // ensure tenants name are valid
            if (!String.IsNullOrEmpty(viewModel.Name) && !Regex.IsMatch(viewModel.Name, @"^\w+$"))
            {
                ModelState.AddModelError("Name", T("Invalid tenant name. Must contain characters only and no spaces.").Text);
            }

            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            try {
                _tenantService.CreateTenant(
                    new ShellSettings {
                    Name                 = viewModel.Name,
                    RequestUrlHost       = viewModel.RequestUrlHost,
                    RequestUrlPrefix     = viewModel.RequestUrlPrefix,
                    DataProvider         = viewModel.DataProvider,
                    DataConnectionString = viewModel.DatabaseConnectionString,
                    DataTablePrefix      = viewModel.DatabaseTablePrefix,
                    State                = TenantState.Uninitialized,
                    Themes               = viewModel.Themes.Where(x => x.Checked).Select(x => x.ThemeId).ToArray(),
                    Modules              = viewModel.Modules.Where(x => x.Checked).Select(x => x.ModuleId).ToArray()
                });

                return(RedirectToAction("Index"));
            }
            catch (ArgumentException exception) {
                Services.Notifier.Error(T("Creating Tenant failed: {0}", exception.Message));
                return(View(viewModel));
            }
        }
Ejemplo n.º 3
0
        public ActionResult Add()
        {
            if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Cannot create tenant")))
            {
                return(new HttpUnauthorizedResult());
            }

            if (!EnsureDefaultTenant())
            {
                return(new HttpUnauthorizedResult());
            }

            var model = new TenantAddViewModel();

            // fetches all available themes
            model.Themes = _tenantService.GetInstalledThemes().Select(x => new ThemeEntry {
                ThemeId = x.Id, ThemeName = x.Name
            }).ToList();

            return(View(model));
        }
Ejemplo n.º 4
0
        public ActionResult Add()
        {
            if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("You don't have permission to create tenants.")))
            {
                return(new HttpUnauthorizedResult());
            }

            if (!IsExecutingInDefaultTenant())
            {
                return(new HttpUnauthorizedResult());
            }

            var viewModel = new TenantAddViewModel();

            // Fetches all available themes and modules.
            viewModel.Themes = _tenantService.GetInstalledThemes().Select(x => new ThemeEntry {
                ThemeId = x.Id, ThemeName = x.Name
            }).ToList();
            viewModel.Modules = _tenantService.GetInstalledModules().Select(x => new ModuleEntry {
                ModuleId = x.Id, ModuleName = x.Name
            }).ToList();

            return(View(viewModel));
        }