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)