Only the "Default" tenant is able to manage tenants

- Don't show links in other tenants
- Protected controller actions

--HG--
branch : dev
This commit is contained in:
Sebastien Ros
2010-10-12 15:42:18 -07:00
parent dc7de6ae96
commit b222794a39
2 changed files with 37 additions and 4 deletions

View File

@@ -32,6 +32,10 @@ namespace Orchard.MultiTenancy.Controllers {
public ActionResult Add() {
if (!Services.Authorizer.Authorize(Permissions.ManageTenants, T("Cannot create tenant")))
return new HttpUnauthorizedResult();
if ( !EnsureDefaultTenant() )
return new HttpUnauthorizedResult();
return View(new TenantAddViewModel());
}
@@ -40,7 +44,10 @@ namespace Orchard.MultiTenancy.Controllers {
try {
if (!Services.Authorizer.Authorize(Permissions.ManageTenants, T("Couldn't create tenant")))
return new HttpUnauthorizedResult();
if ( !EnsureDefaultTenant() )
return new HttpUnauthorizedResult();
_tenantService.CreateTenant(
new ShellSettings {
Name = viewModel.Name,
@@ -64,6 +71,9 @@ namespace Orchard.MultiTenancy.Controllers {
if (!Services.Authorizer.Authorize(Permissions.ManageTenants, T("Cannot edit tenant")))
return new HttpUnauthorizedResult();
if ( !EnsureDefaultTenant() )
return new HttpUnauthorizedResult();
var tenant = _tenantService.GetTenants().FirstOrDefault(ss => ss.Name == name);
if (tenant == null)
return new NotFoundResult();
@@ -85,6 +95,9 @@ namespace Orchard.MultiTenancy.Controllers {
if (!Services.Authorizer.Authorize(Permissions.ManageTenants, T("Couldn't edit tenant")))
return new HttpUnauthorizedResult();
if ( !EnsureDefaultTenant() )
return new HttpUnauthorizedResult();
var tenant = _tenantService.GetTenants().FirstOrDefault(ss => ss.Name == viewModel.Name);
if (tenant == null)
return new NotFoundResult();
@@ -113,6 +126,9 @@ namespace Orchard.MultiTenancy.Controllers {
if (!Services.Authorizer.Authorize(Permissions.ManageTenants, T("Couldn't disable tenant")))
return new HttpUnauthorizedResult();
if ( !EnsureDefaultTenant() )
return new HttpUnauthorizedResult();
var tenant = _tenantService.GetTenants().FirstOrDefault(ss => ss.Name == name);
if (tenant != null && tenant.Name != _thisShellSettings.Name) {
@@ -120,7 +136,7 @@ namespace Orchard.MultiTenancy.Controllers {
_tenantService.UpdateTenant(tenant);
}
return RedirectToAction("index");
return RedirectToAction("Index");
}
[HttpPost]
@@ -128,6 +144,9 @@ namespace Orchard.MultiTenancy.Controllers {
if (!Services.Authorizer.Authorize(Permissions.ManageTenants, T("Couldn't enable tenant")))
return new HttpUnauthorizedResult();
if ( !EnsureDefaultTenant() )
return new HttpUnauthorizedResult();
var tenant = _tenantService.GetTenants().FirstOrDefault(ss => ss.Name == name);
if (tenant != null && tenant.Name != _thisShellSettings.Name) {
@@ -135,7 +154,11 @@ namespace Orchard.MultiTenancy.Controllers {
_tenantService.UpdateTenant(tenant);
}
return RedirectToAction("index");
return RedirectToAction("Index");
}
private bool EnsureDefaultTenant() {
return _thisShellSettings.Name == "Default";
}
}
}