diff --git a/src/main/java/org/olat/modules/qpool/QPoolSecurityCallback.java b/src/main/java/org/olat/modules/qpool/QPoolSecurityCallback.java index 4bae90c1f725aa0528ba8f3d1c2e4c87c9eba712..11c3d38651e3d2f859596bd2b8449dba0a02b181 100644 --- a/src/main/java/org/olat/modules/qpool/QPoolSecurityCallback.java +++ b/src/main/java/org/olat/modules/qpool/QPoolSecurityCallback.java @@ -19,6 +19,8 @@ */ package org.olat.modules.qpool; +import org.olat.core.id.Roles; + /** * * Initial date: 05.12.2017<br> @@ -27,10 +29,8 @@ package org.olat.modules.qpool; */ public interface QPoolSecurityCallback { - public void setAdmin(boolean admin); + public void setRoles(Roles roles); - public void setPoolAdmin(boolean poolAdmin); - boolean canUseCollections(); boolean canUsePools(); @@ -38,6 +38,8 @@ public interface QPoolSecurityCallback { boolean canUseGroups(); boolean canUseReviewProcess(); + + boolean canCreateTest(); boolean canEditAllQuestions(); diff --git a/src/main/java/org/olat/modules/qpool/security/QPoolSecurityCallbackFactory.java b/src/main/java/org/olat/modules/qpool/security/QPoolSecurityCallbackFactory.java index 9c1aaded4cc313a71da7772590b53701f3687455..5db8350b72cdd9c87566cc6bdb02eab5467253a3 100644 --- a/src/main/java/org/olat/modules/qpool/security/QPoolSecurityCallbackFactory.java +++ b/src/main/java/org/olat/modules/qpool/security/QPoolSecurityCallbackFactory.java @@ -59,8 +59,7 @@ public class QPoolSecurityCallbackFactory { public QPoolSecurityCallback createQPoolSecurityCallback(Roles roles) { QPoolSecurityCallback securityCallback = CoreSpringFactory.getImpl(QPoolSecurityCallbackImpl.class); - securityCallback.setAdmin(roles.isOLATAdmin()); - securityCallback.setPoolAdmin(roles.isPoolAdmin()); + securityCallback.setRoles(roles); return securityCallback; } diff --git a/src/main/java/org/olat/modules/qpool/security/QPoolSecurityCallbackImpl.java b/src/main/java/org/olat/modules/qpool/security/QPoolSecurityCallbackImpl.java index bde9a0c40a3d4c9ba07fb7e42b9562786a4df226..dec40e22cfda7c086fe360812d4c6cc02672ed1a 100644 --- a/src/main/java/org/olat/modules/qpool/security/QPoolSecurityCallbackImpl.java +++ b/src/main/java/org/olat/modules/qpool/security/QPoolSecurityCallbackImpl.java @@ -19,6 +19,7 @@ */ package org.olat.modules.qpool.security; +import org.olat.core.id.Roles; import org.olat.modules.qpool.QPoolSecurityCallback; import org.olat.modules.qpool.QuestionPoolModule; import org.springframework.beans.factory.annotation.Autowired; @@ -37,18 +38,16 @@ public class QPoolSecurityCallbackImpl implements QPoolSecurityCallback { private boolean admin = false; private boolean poolAdmin = false; + private boolean olatAuthor = false; @Autowired private QuestionPoolModule qpoolModule; @Override - public void setAdmin(boolean admin) { - this.admin = admin; - } - - @Override - public void setPoolAdmin(boolean poolAdmin) { - this.poolAdmin = poolAdmin; + public void setRoles(Roles roles) { + this.admin = roles.isOLATAdmin(); + this.poolAdmin = roles.isPoolAdmin(); + this.olatAuthor = roles.isAuthor(); } @Override @@ -71,6 +70,12 @@ public class QPoolSecurityCallbackImpl implements QPoolSecurityCallback { return qpoolModule.isReviewProcessEnabled(); } + @Override + public boolean canCreateTest() { + return admin || olatAuthor; + } + + @Override public boolean canEditAllQuestions() { return admin || (poolAdmin && qpoolModule.isPoolAdminAllowedToEditMetadata()); @@ -105,5 +110,4 @@ public class QPoolSecurityCallbackImpl implements QPoolSecurityCallback { public boolean canConfigLicences() { return admin || (poolAdmin && qpoolModule.isPoolAdminAllowedToConfigLicenses()); } - } diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java index 4a48528a5b9c84074050fef3304c226dcb041c75..56c1dc400d891b0a7a6260172c36688fb2fa473f 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java @@ -224,7 +224,9 @@ public class QuestionListController extends AbstractItemListController implement if (getSecurityCallback().canUseCollections()) { list = uifactory.addFormLink("list", formLayout, Link.BUTTON); } - createTest = uifactory.addFormLink("create.test", formLayout, Link.BUTTON); + if (getSecurityCallback().canCreateTest()) { + createTest = uifactory.addFormLink("create.test", formLayout, Link.BUTTON); + } exportItem = uifactory.addFormLink("export.item", formLayout, Link.BUTTON); if (getSecurityCallback().canUsePools() || getSecurityCallback().canUseGroups()) { shareItem = uifactory.addFormLink("share.item", formLayout, Link.BUTTON);