diff --git a/src/main/java/org/olat/modules/qpool/security/ProcesslessSecurityCallback.java b/src/main/java/org/olat/modules/qpool/security/ProcesslessSecurityCallback.java index 6b51acfcbb8d281dfab4359eca6cf09af4bdcef7..54635978bfd939651e4408af618419f8b7b6062d 100644 --- a/src/main/java/org/olat/modules/qpool/security/ProcesslessSecurityCallback.java +++ b/src/main/java/org/olat/modules/qpool/security/ProcesslessSecurityCallback.java @@ -19,6 +19,7 @@ */ package org.olat.modules.qpool.security; +import org.olat.modules.qpool.QPoolService; import org.olat.modules.qpool.QuestionItemSecurityCallback; import org.olat.modules.qpool.QuestionItemView; import org.olat.modules.qpool.QuestionPoolModule; @@ -44,6 +45,8 @@ public class ProcesslessSecurityCallback implements QuestionItemSecurityCallback @Autowired private QuestionPoolModule qpoolModule; + @Autowired + private QPoolService qpoolService; @Override public void setQuestionItemView(QuestionItemView itemView) { @@ -161,7 +164,9 @@ public class ProcesslessSecurityCallback implements QuestionItemSecurityCallback @Override public boolean canRemove() { return questionItemSource.isRemoveEnabled() - && (admin || itemView.isAuthor()); + || admin + || poolAdmin + || itemView.isAuthor(); } @Override diff --git a/src/main/java/org/olat/modules/qpool/security/ReviewProcessSecurityCallback.java b/src/main/java/org/olat/modules/qpool/security/ReviewProcessSecurityCallback.java index 1469e45c69b32a6280751afd1a8ba20f5736b854..d21d0f0e77d5be6629e5b7116d6d028fbd38151e 100644 --- a/src/main/java/org/olat/modules/qpool/security/ReviewProcessSecurityCallback.java +++ b/src/main/java/org/olat/modules/qpool/security/ReviewProcessSecurityCallback.java @@ -160,8 +160,10 @@ public class ReviewProcessSecurityCallback implements QuestionItemSecurityCallba @Override public boolean canRemove() { - return questionItemSource.isRemoveEnabled() - && (admin || itemView.isAuthor() || (poolAdmin && qpoolModule.isPoolAdminAllowedToEditStatus())); + return questionItemSource.isRemoveEnabled() + || admin + || poolAdmin + || itemView.isAuthor(); } @Override diff --git a/src/main/java/org/olat/modules/qpool/ui/datasource/PoolItemsSource.java b/src/main/java/org/olat/modules/qpool/ui/datasource/PoolItemsSource.java index 85217be35e15a29bd1f8fb3919f6e2dc488240ff..e931da62f3311b2982ad15090ff65adc95966e73 100644 --- a/src/main/java/org/olat/modules/qpool/ui/datasource/PoolItemsSource.java +++ b/src/main/java/org/olat/modules/qpool/ui/datasource/PoolItemsSource.java @@ -46,6 +46,10 @@ public class PoolItemsSource extends DefaultItemsSource { getDefaultParams().setPoolKey(pool.getKey()); } + public Pool getPool() { + return pool; + } + @Override public void removeFromSource(List<QuestionItemShort> items) { qpoolService.removeItemsInPool(items, pool); diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/BusinessGroupTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/BusinessGroupTreeNode.java index 1f8619c050190b6f1234d5b593c96aee43fd32c2..74cbd57e352c1f87b4badb1370cb29b7fa963fb9 100644 --- a/src/main/java/org/olat/modules/qpool/ui/tree/BusinessGroupTreeNode.java +++ b/src/main/java/org/olat/modules/qpool/ui/tree/BusinessGroupTreeNode.java @@ -26,7 +26,6 @@ import org.olat.core.gui.components.tree.GenericTreeNode; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.id.Identity; -import org.olat.core.id.Roles; import org.olat.core.id.context.BusinessControlFactory; import org.olat.group.BusinessGroup; import org.olat.group.BusinessGroupService; @@ -93,11 +92,6 @@ public class BusinessGroupTreeNode extends GenericTreeNode implements Controller private boolean isShareAdmin(UserRequest ureq, BusinessGroup group) { Identity identity = ureq.getIdentity(); - Roles roles = ureq.getUserSession().getRoles(); - return roles != null && - ( roles.isOLATAdmin() - || roles.isPoolAdmin() - || businessGroupService.isIdentityInBusinessGroup(identity, group.getKey(), true, false, null) - ); + return businessGroupService.isIdentityInBusinessGroup(identity, group.getKey(), true, false, null); } } diff --git a/src/main/java/org/olat/modules/qpool/ui/tree/PoolTreeNode.java b/src/main/java/org/olat/modules/qpool/ui/tree/PoolTreeNode.java index bac68c3f8f8e500c52ffd2bc689e55060a672910..03a5d5bfec5ac784257ac1af5dc4906838f6cbfb 100644 --- a/src/main/java/org/olat/modules/qpool/ui/tree/PoolTreeNode.java +++ b/src/main/java/org/olat/modules/qpool/ui/tree/PoolTreeNode.java @@ -26,7 +26,6 @@ import org.olat.core.gui.components.tree.GenericTreeNode; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.id.Identity; -import org.olat.core.id.Roles; import org.olat.core.id.context.BusinessControlFactory; import org.olat.modules.qpool.Pool; import org.olat.modules.qpool.QPoolSecurityCallback; @@ -79,7 +78,7 @@ public class PoolTreeNode extends GenericTreeNode implements ControllerTreeNode ureq.getIdentity(), ureq.getUserSession().getRoles(), pool); - source.setRemoveEnabled(isPoolAdmin(ureq, pool)); + source.setRemoveEnabled(isRemoveEnabled(ureq, pool)); WindowControl swControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, pool, null, wControl, true); questionsCtrl = new QuestionsController(ureq, swControl, stackPanel, source, securityCallback, @@ -90,15 +89,9 @@ public class PoolTreeNode extends GenericTreeNode implements ControllerTreeNode return questionsCtrl; } - private boolean isPoolAdmin(UserRequest ureq, Pool pool) { + private boolean isRemoveEnabled(UserRequest ureq, Pool pool) { Identity identity = ureq.getIdentity(); - Roles roles = ureq.getUserSession().getRoles(); - return roles != null && - ( roles.isOLATAdmin() - || roles.isPoolAdmin() - || pool.isPublicPool() - || qpoolService.isOwner(identity, pool) - ); + return pool.isPublicPool() || qpoolService.isOwner(identity, pool); } }