diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/extended-repository-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/extended-repository-context.xml index 8c04b29c38..74618744d2 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/extended-repository-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/extended-repository-context.xml @@ -250,5 +250,23 @@ + + + + search + + + + + + + + + + + + ${spaces.store} + + \ No newline at end of file diff --git a/rm-server/source/java/org/alfresco/repo/jscript/ExtendedSearch.java b/rm-server/source/java/org/alfresco/repo/jscript/ExtendedSearch.java new file mode 100644 index 0000000000..60d0764315 --- /dev/null +++ b/rm-server/source/java/org/alfresco/repo/jscript/ExtendedSearch.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2005-2013 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.repo.jscript; + +import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.security.AccessStatus; +import org.alfresco.service.cmr.security.PermissionService; +import org.alfresco.util.ParameterCheck; + +/** + * Extended jscript search implementation. + * + * @author Roy Wetherall + * @since 2.1 + */ +public class ExtendedSearch extends Search +{ + /** + * Extended to take into account record read permission check. + * + * @see org.alfresco.repo.jscript.Search#findNode(org.alfresco.service.cmr.repository.NodeRef) + */ + @Override + public ScriptNode findNode(NodeRef ref) + { + ParameterCheck.mandatory("ref", ref); + if (this.services.getNodeService().exists(ref) && + (this.services.getPermissionService().hasPermission(ref, PermissionService.READ) == AccessStatus.ALLOWED || + this.services.getPermissionService().hasPermission(ref, RMPermissionModel.READ_RECORDS) == AccessStatus.ALLOWED)) + { + return new ScriptNode(ref, this.services, getScope()); + } + return null; + } + +}