public ActionResult AddPOST(TenantAddViewModel viewModel) { if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Couldn't create tenant"))) return new HttpUnauthorizedResult(); if (!EnsureDefaultTenant()) return new HttpUnauthorizedResult(); // 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 = new TenantState("Uninitialized") }); return RedirectToAction("Index"); } catch (Exception exception) { this.Error(exception, T("Creating Tenant failed: {0}", exception.Message), Logger, Services.Notifier); return View(viewModel); } }
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); }
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, @"^\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.Information(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); } }
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); }
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); } }
public ActionResult AddPOST(TenantAddViewModel viewModel) { try { if (!Services.Authorizer.Authorize(Permissions.ManageTenants, T("Couldn't create tenant"))) return new HttpUnauthorizedResult(); _tenantService.CreateTenant( new ShellSettings { Name = viewModel.Name, RequestUrlHost = viewModel.RequestUrlHost, RequestUrlPrefix = viewModel.RequestUrlPrefix, DataProvider = viewModel.DataProvider, DataConnectionString = viewModel.DatabaseConnectionString, DataTablePrefix = viewModel.DatabaseTablePrefix, State = new TenantState("Uninitialized") }); return RedirectToAction("Index"); } catch (Exception exception) { Services.Notifier.Error(T("Creating Tenant failed: ") + exception.Message); return View(viewModel); } }