diff --git a/src/main/java/org/olat/search/service/indexer/repository/course/FOCourseNodeIndexer.java b/src/main/java/org/olat/search/service/indexer/repository/course/FOCourseNodeIndexer.java index a033e559dd9a076ab69b548d912b5e79a41fa749..cf73e575a9d86491b92daebead037671ec784162 100644 --- a/src/main/java/org/olat/search/service/indexer/repository/course/FOCourseNodeIndexer.java +++ b/src/main/java/org/olat/search/service/indexer/repository/course/FOCourseNodeIndexer.java @@ -86,17 +86,19 @@ public class FOCourseNodeIndexer extends ForumIndexer implements CourseNodeIndex ContextEntry ce = businessControl.popLauncherContextEntry(); Long resourceableId = ce.getOLATResourceable().getResourceableId(); Message message = ForumManager.getInstance().loadMessage(resourceableId); - Message threadtop = message.getThreadtop(); - if(threadtop==null) { - threadtop = message; + if(message != null) { + Message threadtop = message.getThreadtop(); + if(threadtop == null) { + threadtop = message; + } + boolean isMessageHidden = Status.getStatus(threadtop.getStatusCode()).isHidden(); + //assumes that if is owner then is moderator so it is allowed to see the hidden forum threads + //TODO: (LD) fix this!!! - the contextEntry is not the right context for this check + boolean isOwner = BaseSecurityManager.getInstance().isIdentityPermittedOnResourceable(identity, Constants.PERMISSION_ACCESS, contextEntry.getOLATResourceable()); + if(isMessageHidden && !isOwner) { + return false; + } } - boolean isMessageHidden = Status.getStatus(threadtop.getStatusCode()).isHidden(); - //assumes that if is owner then is moderator so it is allowed to see the hidden forum threads - //TODO: (LD) fix this!!! - the contextEntry is not the right context for this check - boolean isOwner = BaseSecurityManager.getInstance().isIdentityPermittedOnResourceable(identity, Constants.PERMISSION_ACCESS, contextEntry.getOLATResourceable()); - if(isMessageHidden && !isOwner) { - return false; - } return super.checkAccess(contextEntry, businessControl, identity, roles); }