From edfd027e8b28cf436b3f49c4dce527551a8bca83 Mon Sep 17 00:00:00 2001 From: fkiefer <none@none> Date: Wed, 5 Apr 2017 15:41:58 +0200 Subject: [PATCH] OO-2621 edit rights --- .../olat/commons/info/ui/InfoDisplayController.java | 2 +- .../olat/commons/info/ui/InfoSecurityCallback.java | 4 +++- .../olat/course/nodes/info/InfoRunController.java | 11 +++++++---- .../olat/group/ui/run/InfoGroupRunController.java | 12 ++++++++---- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java b/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java index 96d2ca32e80..ee786cb3bf6 100644 --- a/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java +++ b/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java @@ -225,7 +225,7 @@ public class InfoDisplayController extends FormBasicController { DateElement dateEl = DateComponentFactory.createDateElementWithYear(dateCmpName, info.getCreationDate()); flc.add(dateCmpName, dateEl); - if(secCallback.canEdit() && (ureq.getIdentity().equals(info.getAuthor()) || secCallback.canDelete())) { + if(secCallback.canEdit(info)) { String editName = "info.edit." + info.getKey(); FormLink link = uifactory.addFormLink(editName, "edit", "edit", flc, Link.BUTTON_SMALL); link.setElementCssClass("o_sel_info_edit_msg"); diff --git a/src/main/java/org/olat/commons/info/ui/InfoSecurityCallback.java b/src/main/java/org/olat/commons/info/ui/InfoSecurityCallback.java index d5c73b61710..562bed7e944 100644 --- a/src/main/java/org/olat/commons/info/ui/InfoSecurityCallback.java +++ b/src/main/java/org/olat/commons/info/ui/InfoSecurityCallback.java @@ -20,6 +20,8 @@ package org.olat.commons.info.ui; +import org.olat.commons.info.model.InfoMessage; + /** * * Description:<br> @@ -35,7 +37,7 @@ public interface InfoSecurityCallback { public boolean canAdd(); - public boolean canEdit(); + public boolean canEdit(InfoMessage infoMessage); public boolean canDelete(); diff --git a/src/main/java/org/olat/course/nodes/info/InfoRunController.java b/src/main/java/org/olat/course/nodes/info/InfoRunController.java index 6245d6f1dbe..89278a096a9 100644 --- a/src/main/java/org/olat/course/nodes/info/InfoRunController.java +++ b/src/main/java/org/olat/course/nodes/info/InfoRunController.java @@ -26,6 +26,7 @@ import java.util.StringTokenizer; import org.olat.commons.info.manager.InfoMessageFrontendManager; import org.olat.commons.info.manager.MailFormatter; +import org.olat.commons.info.model.InfoMessage; import org.olat.commons.info.notification.InfoSubscription; import org.olat.commons.info.notification.InfoSubscriptionManager; import org.olat.commons.info.ui.InfoDisplayController; @@ -130,7 +131,7 @@ public class InfoRunController extends BasicController { || roles.isOLATAdmin(); } - InfoSecurityCallback secCallback = new InfoCourseSecurityCallback(canAdd, canAdmin); + InfoSecurityCallback secCallback = new InfoCourseSecurityCallback(getIdentity(), canAdd, canAdmin); RepositoryService repositoryService = CoreSpringFactory.getImpl(RepositoryService.class); infoDisplayController = new InfoDisplayController(ureq, wControl, config, secCallback, infoResourceable, resSubPath, businessPath); @@ -206,10 +207,12 @@ public class InfoRunController extends BasicController { private class InfoCourseSecurityCallback implements InfoSecurityCallback { private final boolean canAdd; private final boolean canAdmin; + private final Identity identity; - public InfoCourseSecurityCallback(boolean canAdd, boolean canAdmin) { + public InfoCourseSecurityCallback(Identity identity, boolean canAdd, boolean canAdmin) { this.canAdd = canAdd; this.canAdmin = canAdmin; + this.identity = identity; } @Override @@ -223,8 +226,8 @@ public class InfoRunController extends BasicController { } @Override - public boolean canEdit() { - return canAdmin; + public boolean canEdit(InfoMessage infoMessage) { + return identity.equals(infoMessage.getAuthor()) || canAdmin; } @Override diff --git a/src/main/java/org/olat/group/ui/run/InfoGroupRunController.java b/src/main/java/org/olat/group/ui/run/InfoGroupRunController.java index 6e229c77dcc..102d4191933 100644 --- a/src/main/java/org/olat/group/ui/run/InfoGroupRunController.java +++ b/src/main/java/org/olat/group/ui/run/InfoGroupRunController.java @@ -25,6 +25,7 @@ import java.util.StringTokenizer; import org.olat.commons.info.manager.InfoMessageFrontendManager; import org.olat.commons.info.manager.MailFormatter; +import org.olat.commons.info.model.InfoMessage; import org.olat.commons.info.notification.InfoSubscription; import org.olat.commons.info.notification.InfoSubscriptionManager; import org.olat.commons.info.ui.InfoDisplayController; @@ -42,6 +43,7 @@ import org.olat.core.gui.control.Controller; 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.id.Identity; import org.olat.core.id.OLATResourceable; import org.olat.core.util.UserSession; import org.olat.core.util.resource.OresHelper; @@ -87,7 +89,7 @@ public class InfoGroupRunController extends BasicController { } boolean canAddAndEdit = isAdmin || canAccess; - InfoSecurityCallback secCallback = new InfoGroupSecurityCallback(canAddAndEdit, isAdmin); + InfoSecurityCallback secCallback = new InfoGroupSecurityCallback(getIdentity(), canAddAndEdit, isAdmin); infoDisplayController = new InfoDisplayController(ureq, wControl, secCallback, businessGroup, resSubPath, businessPath); SendMailOption subscribers = new SendSubscriberMailOption(infoResourceable, resSubPath, messageManager); infoDisplayController.addSendMailOptions(subscribers); @@ -162,10 +164,12 @@ public class InfoGroupRunController extends BasicController { private class InfoGroupSecurityCallback implements InfoSecurityCallback { private final boolean canAdd; private final boolean canAdmin; + private final Identity identity; - public InfoGroupSecurityCallback(boolean canAdd, boolean canAdmin) { + public InfoGroupSecurityCallback(Identity identity, boolean canAdd, boolean canAdmin) { this.canAdd = canAdd; this.canAdmin = canAdmin; + this.identity = identity; } @Override @@ -179,8 +183,8 @@ public class InfoGroupRunController extends BasicController { } @Override - public boolean canEdit() { - return canAdd; + public boolean canEdit(InfoMessage infoMessage) { + return identity.equals(infoMessage.getAuthor()) || canAdmin; } @Override -- GitLab