diff --git a/source/java/org/alfresco/rest/api/impl/SitesImpl.java b/source/java/org/alfresco/rest/api/impl/SitesImpl.java index 0c114e64d8..1ccdb8af23 100644 --- a/source/java/org/alfresco/rest/api/impl/SitesImpl.java +++ b/source/java/org/alfresco/rest/api/impl/SitesImpl.java @@ -406,6 +406,12 @@ public class SitesImpl implements Sites throw new InvalidArgumentException("Must provide a role"); } + /* MNT-10551 : fix */ + if (!siteService.isMember(siteId, siteMember.getPersonId())) + { + throw new InvalidArgumentException("User is not a member of the site"); + } + siteService.setMembership(siteId, siteMember.getPersonId(), siteRole.toString()); return siteMember; } diff --git a/source/test-java/org/alfresco/rest/api/tests/TestSiteMembers.java b/source/test-java/org/alfresco/rest/api/tests/TestSiteMembers.java index 5b03fd7652..99f1cd0531 100644 --- a/source/test-java/org/alfresco/rest/api/tests/TestSiteMembers.java +++ b/source/test-java/org/alfresco/rest/api/tests/TestSiteMembers.java @@ -500,6 +500,18 @@ public class TestSiteMembers extends EnterpriseTestApi { assertEquals(HttpStatus.SC_BAD_REQUEST, e.getHttpResponse().getStatusCode()); } + + // user is not a member of the site - 400 + try + { + publicApiClient.setRequestContext(new RequestContext(network1.getId(), person2.getId())); + sitesProxy.updateSiteMember(site.getSiteId(), new SiteMember(person1.getId(), SiteRole.SiteContributor.toString())); + fail(); + } + catch(PublicApiException e) + { + assertEquals(HttpStatus.SC_BAD_REQUEST, e.getHttpResponse().getStatusCode()); + } // successful update {