RM: Fix ScriptNode to check public methods can be executed using PublicServiceAccessService (and not be based on an assumed permission check)

- rm doc details are now displayed correctly when users do not have DM read

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@16415 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Andrew Hind
2009-09-21 20:19:29 +00:00
parent d0bd7bc2a4
commit 53fddcb5f7
3 changed files with 23 additions and 1 deletions

View File

@@ -2537,7 +2537,7 @@ public class ScriptNode implements Serializable, Scopeable, NamespacePrefixResol
if (this.nodeService.exists(nodeRef))
{
if (this.services.getPermissionService().hasPermission(nodeRef, PermissionService.READ_PROPERTIES) == AccessStatus.ALLOWED)
if(this.services.getPublicServiceAccessService().hasAccess(this.services.NODE_SERVICE.getLocalName(), "getProperties", this.nodeRef) == AccessStatus.ALLOWED)
{
JSONObject json = new JSONObject();

View File

@@ -65,6 +65,7 @@ import org.alfresco.service.cmr.security.AuthorityService;
import org.alfresco.service.cmr.security.OwnableService;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.cmr.security.PublicServiceAccessService;
import org.alfresco.service.cmr.site.SiteService;
import org.alfresco.service.cmr.tagging.TaggingService;
import org.alfresco.service.cmr.thumbnail.ThumbnailService;
@@ -560,4 +561,12 @@ public class ServiceDescriptorRegistry
{
return (ImapService)getService(IMAP_SERVICE);
}
/* (non-Javadoc)
* @see org.alfresco.service.ServiceRegistry#getPublicServiceAccessService()
*/
public PublicServiceAccessService getPublicServiceAccessService()
{
return (PublicServiceAccessService)getService(PUBLIC_SERVICE_ACCESS_SERVICE);
}
}

View File

@@ -64,6 +64,7 @@ import org.alfresco.service.cmr.security.AuthorityService;
import org.alfresco.service.cmr.security.OwnableService;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.cmr.security.PublicServiceAccessService;
import org.alfresco.service.cmr.site.SiteService;
import org.alfresco.service.cmr.tagging.TaggingService;
import org.alfresco.service.cmr.thumbnail.ThumbnailService;
@@ -155,6 +156,9 @@ public interface ServiceRegistry
static final QName CMIS_QUERY_SERVICE = QName.createQName(NamespaceService.ALFRESCO_URI, "CMISQueryService");
static final QName IMAP_SERVICE = QName.createQName(NamespaceService.ALFRESCO_URI, "ImapService");
static final QName PUBLIC_SERVICE_ACCESS_SERVICE = QName.createQName(NamespaceService.ALFRESCO_URI, "PublicServiceAccessService");
/**
* Get the list of services provided by the Repository
@@ -524,4 +528,13 @@ public interface ServiceRegistry
*/
@NotAuditable
ImapService getImapService();
/**
* Get the IMAP service (or null if one is not provided)
* @return the IMAP service
*/
@NotAuditable
PublicServiceAccessService getPublicServiceAccessService();
}