From 3024835d4fdab49b27225df4ecb63daef8233b1c Mon Sep 17 00:00:00 2001 From: Mark Rogers Date: Wed, 30 Apr 2014 16:10:58 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud) 68126: Merged V4.2-BUG-FIX (4.2.3) to HEAD-BUG-FIX (4.3/Cloud) 67461: Merged V4.1-BUG-FIX (4.1.9) to V4.2-BUG-FIX (4.2.3) 66886: Merged DEV to V4.1-BUG-FIX 66841 : MNT-9905 : Pending Invites created by one site manager aren't visible to other site managers Execute some operation: "Invite/Search", "Pending Invites/Search" and "Pending Invites/Search/Cancel" using 'system' user. Corrected code. Added test. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@68411 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/invitation-service-context.xml | 1 + .../script/ScriptInvitationService.java | 38 ++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/config/alfresco/invitation-service-context.xml b/config/alfresco/invitation-service-context.xml index 25e91b39ae..972b790fb6 100644 --- a/config/alfresco/invitation-service-context.xml +++ b/config/alfresco/invitation-service-context.xml @@ -72,6 +72,7 @@ + diff --git a/source/java/org/alfresco/repo/invitation/script/ScriptInvitationService.java b/source/java/org/alfresco/repo/invitation/script/ScriptInvitationService.java index 1c0cab463a..826784aec2 100644 --- a/source/java/org/alfresco/repo/invitation/script/ScriptInvitationService.java +++ b/source/java/org/alfresco/repo/invitation/script/ScriptInvitationService.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2011 Alfresco Software Limited. + * Copyright (C) 2005-2014 Alfresco Software Limited. * * This file is part of Alfresco * @@ -22,12 +22,16 @@ import java.util.List; import org.alfresco.repo.invitation.InvitationSearchCriteriaImpl; import org.alfresco.repo.jscript.BaseScopableProcessorExtension; +import org.alfresco.repo.security.authentication.AuthenticationUtil; +import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; +import org.alfresco.repo.site.SiteModel; import org.alfresco.service.cmr.invitation.Invitation; import org.alfresco.service.cmr.invitation.InvitationService; import org.alfresco.service.cmr.invitation.Invitation.ResourceType; import org.alfresco.service.cmr.invitation.InvitationSearchCriteria.InvitationType; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.security.PersonService; +import org.alfresco.service.cmr.site.SiteService; import org.alfresco.util.ParameterCheck; import org.mozilla.javascript.Scriptable; import org.springframework.beans.factory.InitializingBean; @@ -56,6 +60,8 @@ public class ScriptInvitationService extends BaseScopableProcessorExtension /** The Script Invitation Factory */ private ScriptInvitationFactory scriptInvitationFactory; + private SiteService siteService; + /** * Set the invitation service * @@ -86,6 +92,11 @@ public class ScriptInvitationService extends BaseScopableProcessorExtension this.personService = personService; } + public void setSiteService(SiteService siteService) + { + this.siteService = siteService; + } + /** * List the open invitations. * props specifies optional properties to constrain the search. @@ -120,7 +131,30 @@ public class ScriptInvitationService extends BaseScopableProcessorExtension crit.setInvitationType(InvitationType.valueOf(invitationType)); } - List invitations = invitationService.searchInvitation(crit); + //MNT-9905 Pending Invites created by one site manager aren't visible to other site managers + String currentUser = AuthenticationUtil.getRunAsUser(); + String siteShortName = crit.getResourceName(); + List invitations; + + if (siteShortName != null && (SiteModel.SITE_MANAGER).equals(siteService.getMembersRole(siteShortName, currentUser))) + { + final InvitationSearchCriteriaImpl criteria = crit; + + RunAsWork> runAsSystem = new RunAsWork>() + { + public List doWork() throws Exception + { + return invitationService.searchInvitation(criteria); + } + }; + + invitations = AuthenticationUtil.runAs(runAsSystem, AuthenticationUtil.getSystemUserName()); + } + else + { + invitations = invitationService.searchInvitation(crit); + } + ScriptInvitation[] ret = new ScriptInvitation[invitations.size()]; int i = 0; for(Invitation item : invitations)