From 39e2a1fa080a5edc3ad9655df30be8c5665d374c Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Tue, 7 Feb 2017 09:24:23 +0100 Subject: [PATCH] OO-2499: show a message if the user has not enough privileges to edit the quota and not a red screen --- .../admin/quota/GenericQuotaEditController.java | 4 ++-- .../admin/quota/GenericQuotaViewController.java | 16 +++++++--------- .../org/olat/admin/quota/QuotaManagerImpl.java | 11 +++++++++-- .../java/org/olat/admin/quota/_content/edit.html | 6 ++++++ .../admin/quota/_i18n/LocalStrings_de.properties | 1 + .../admin/quota/_i18n/LocalStrings_en.properties | 1 + .../org/olat/core/util/vfs/QuotaManager.java | 6 +++--- 7 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/olat/admin/quota/GenericQuotaEditController.java b/src/main/java/org/olat/admin/quota/GenericQuotaEditController.java index 2de9bc1d351..6a5b002b2f8 100644 --- a/src/main/java/org/olat/admin/quota/GenericQuotaEditController.java +++ b/src/main/java/org/olat/admin/quota/GenericQuotaEditController.java @@ -121,8 +121,9 @@ public class GenericQuotaEditController extends BasicController { private void initMyContent(UserRequest ureq) { QuotaManager qm = QuotaManager.getInstance(); - if (!qm.hasQuotaEditRights(ureq.getIdentity())) + if (!qm.hasQuotaEditRights(ureq.getIdentity())) { throw new OLATSecurityException("Insufficient permissions to access QuotaController"); + } myContent = createVelocityContainer("edit"); myContent.contextPut("modalMode", Boolean.valueOf(modalMode)); @@ -130,7 +131,6 @@ public class GenericQuotaEditController extends BasicController { delQuotaButton = LinkFactory.createButtonSmall("qf.del", myContent, this); cancelButton = LinkFactory.createButtonSmall("cancel", myContent, this); - //TODO loop over QuotaManager.getDefaultQuotaIdentifyers instead myContent.contextPut("users",qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_USERS)); myContent.contextPut("powerusers",qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_POWER)); myContent.contextPut("groups",qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_GROUPS)); diff --git a/src/main/java/org/olat/admin/quota/GenericQuotaViewController.java b/src/main/java/org/olat/admin/quota/GenericQuotaViewController.java index 900fd214b77..22d7d4467ed 100644 --- a/src/main/java/org/olat/admin/quota/GenericQuotaViewController.java +++ b/src/main/java/org/olat/admin/quota/GenericQuotaViewController.java @@ -31,7 +31,6 @@ import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; -import org.olat.core.logging.OLATSecurityException; import org.olat.core.util.vfs.Quota; import org.olat.core.util.vfs.QuotaManager; @@ -69,7 +68,7 @@ public class GenericQuotaViewController extends BasicController { QuotaManager qm = QuotaManager.getInstance(); currentQuota = qm.getCustomQuota(relPath); // init velocity context - initMyContent(ureq); + initMyContent(); if (currentQuota == null) { currentQuota = qm.createQuota(relPath, null, null); } else { @@ -78,16 +77,16 @@ public class GenericQuotaViewController extends BasicController { myContent.contextPut("editQuota", Boolean.FALSE); putInitialPanel(myContent); } + + public void setNotEnoughPrivilegeMessage() { + myContent.contextPut("notEnoughPrivilege", Boolean.TRUE); + } - private void initMyContent(UserRequest ureq) { + private void initMyContent() { QuotaManager qm = QuotaManager.getInstance(); - if (!qm.hasQuotaEditRights(ureq.getIdentity())) - throw new OLATSecurityException("Insufficient permissions to access QuotaController"); - myContent = createVelocityContainer("edit"); + myContent.contextPut("notEnoughPrivilege", Boolean.FALSE); myContent.contextPut("modalMode", Boolean.valueOf(modalMode)); - - //TODO loop over QuotaManager.getDefaultQuotaIdentifyers instead myContent.contextPut("users",qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_USERS)); myContent.contextPut("powerusers",qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_POWER)); myContent.contextPut("groups",qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_GROUPS)); @@ -95,7 +94,6 @@ public class GenericQuotaViewController extends BasicController { myContent.contextPut("coursefolder",qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_COURSE)); myContent.contextPut("nodefolder",qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_NODES)); myContent.contextPut("feeds",qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_FEEDS)); - } private void initQuotaForm(UserRequest ureq, Quota quota) { diff --git a/src/main/java/org/olat/admin/quota/QuotaManagerImpl.java b/src/main/java/org/olat/admin/quota/QuotaManagerImpl.java index 4650ac70331..2a66746c7d1 100644 --- a/src/main/java/org/olat/admin/quota/QuotaManagerImpl.java +++ b/src/main/java/org/olat/admin/quota/QuotaManagerImpl.java @@ -43,6 +43,7 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.id.Identity; import org.olat.core.logging.OLATRuntimeException; +import org.olat.core.logging.OLATSecurityException; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.core.util.resource.OresHelper; @@ -400,13 +401,19 @@ public class QuotaManagerImpl extends QuotaManager { return true; } - /** * @see org.olat.core.util.vfs.QuotaManager#getQuotaEditorInstance(org.olat.core.gui.UserRequest, org.olat.core.gui.control.WindowControl, java.lang.String, boolean) */ @Override public Controller getQuotaEditorInstance(UserRequest ureq, WindowControl wControl, String relPath, boolean modalMode) { - return new GenericQuotaEditController(ureq, wControl, relPath, modalMode); + try { + return new GenericQuotaEditController(ureq, wControl, relPath, modalMode); + } catch (OLATSecurityException e) { + log.warn("Try to access the quota editor without enough privilege", e); + GenericQuotaViewController viewCtrl = new GenericQuotaViewController(ureq, wControl, relPath, modalMode); + viewCtrl.setNotEnoughPrivilegeMessage(); + return viewCtrl; + } } diff --git a/src/main/java/org/olat/admin/quota/_content/edit.html b/src/main/java/org/olat/admin/quota/_content/edit.html index 57c2df90834..75138ad7b6b 100644 --- a/src/main/java/org/olat/admin/quota/_content/edit.html +++ b/src/main/java/org/olat/admin/quota/_content/edit.html @@ -1,6 +1,9 @@ #if($editQuota) <fieldset class="clearfix"> <legend>$r.translate("qf.edit")</legend> + #if($r.isNotNull($notEnoughPrivilege) && $notEnoughPrivilege) + <div class="o_warning">$r.translate("warning.qd.not.enough.privilege")</div> + #end #if(!$isEmptyQuota) <div class="o_button_group o_button_group_right">$r.render("qf.del")</div> #end @@ -9,6 +12,9 @@ #else <fieldset class="clearfix"> <legend>$r.translate("qf.new")</legend> + #if($r.isNotNull($notEnoughPrivilege) && $notEnoughPrivilege) + <div class="o_warning">$r.translate("warning.qd.not.enough.privilege")</div> + #end #if($r.available("qf.new")) <div class="o_button_group o_button_group_right">$r.render("qf.new")</div> #end diff --git a/src/main/java/org/olat/admin/quota/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/quota/_i18n/LocalStrings_de.properties index 3cd0d744c7d..f369dc40ade 100644 --- a/src/main/java/org/olat/admin/quota/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/admin/quota/_i18n/LocalStrings_de.properties @@ -25,3 +25,4 @@ qf.title=Quotaverwaltung table.header.limit=Upload Limite KB table.header.path=Pfad table.header.quota=Quota KB +warning.qd.not.enough.privilege=Sie haben nicht die Berechtigungen Quota zu editieren. diff --git a/src/main/java/org/olat/admin/quota/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/quota/_i18n/LocalStrings_en.properties index f4f0b75f0ec..a701d4ec531 100644 --- a/src/main/java/org/olat/admin/quota/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/admin/quota/_i18n/LocalStrings_en.properties @@ -25,3 +25,4 @@ qf.title=Quota management table.header.limit=Upload limit KB table.header.path=Path table.header.quota=Quota KB +warning.qd.not.enough.privilege=You don't have the privileges to edit quotas. diff --git a/src/main/java/org/olat/core/util/vfs/QuotaManager.java b/src/main/java/org/olat/core/util/vfs/QuotaManager.java index 59661c6bf72..f1a79eb6aaf 100644 --- a/src/main/java/org/olat/core/util/vfs/QuotaManager.java +++ b/src/main/java/org/olat/core/util/vfs/QuotaManager.java @@ -33,7 +33,6 @@ import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.id.Identity; -import org.olat.core.manager.BasicManager; /** * Initial Date: Feb 17, 2004 @@ -45,7 +44,7 @@ import org.olat.core.manager.BasicManager; * <br> * Comment: Refactoring to core package make default quotas generic */ -public abstract class QuotaManager extends BasicManager{ +public abstract class QuotaManager { protected static QuotaManager INSTANCE; @@ -153,7 +152,8 @@ public abstract class QuotaManager extends BasicManager{ /** * Factory method to create a controller that is capable of editing the - * quota for the given path. + * quota for the given path. If the user has not enough privileges to edit + * the quota, it will only see the quota's view. * <p> * The controller must fire the following events: * <ul> -- GitLab