diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/login.post.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/repository/login.post.desc.xml
index 79ecb07943..31aad53af7 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/login.post.desc.xml
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/login.post.desc.xml
@@ -18,7 +18,7 @@
/api/login
none
- required
+ required
limited_support
Authentication
diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/person/people.get.js b/config/alfresco/templates/webscripts/org/alfresco/repository/person/people.get.js
index 3be7d00636..1bb3f72203 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/person/people.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/person/people.get.js
@@ -1,12 +1,24 @@
+function main()
+{
+
// Get the args
var filter = args["filter"];
var maxResults = args["maxResults"];
var sortBy = args["sortBy"];
var sortAsc = args["dir"] != "desc";
-// Get the collection of people
-var paging = utils.createPaging(maxResults != null ? parseInt(maxResults) : 0, -1);
-var peopleCollection = people.getPeoplePaging(filter, paging, sortBy, sortAsc);
+// Get the sorted collection of people
+var peopleCollection = people.getPeople(filter, maxResults != null ? parseInt(maxResults) : -1, sortBy, sortAsc);
+
+var skipCount = args["startIndex"] != null ? parseInt(args["startIndex"]) : 0;
+var pageSize = args["pageSize"] != null ? parseInt(args["pageSize"]) : peopleCollection.length
// Pass the queried sites to the template
-model.peoplelist = peopleCollection;
\ No newline at end of file
+model.maxItems = pageSize;
+model.totalItems = peopleCollection.length;
+model.skipCount = skipCount;
+
+model.peoplelist = peopleCollection.slice(skipCount, skipCount + pageSize);
+
+}
+main();
diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/person/people.get.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/person/people.get.json.ftl
index 50ee3248d4..8b97f26d6b 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/person/people.get.json.ftl
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/person/people.get.json.ftl
@@ -5,5 +5,11 @@
<@personLib.personJSON person=person/>
<#if person_has_next>,#if>
#list>
-]
+],
+"paging":
+ {
+ "maxItems": ${maxItems?c},
+ "totalItems": ${totalItems?c},
+ "skipCount":${skipCount?c}
+ }
}
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/person/person.lib.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/person/person.lib.ftl
index 602367cb4d..60ef32ff98 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/person/person.lib.ftl
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/person/person.lib.ftl
@@ -31,7 +31,10 @@
"quota": <#if p.sizeQuota??>${p.sizeQuota?c}<#else>-1#if>,
"sizeCurrent": <#if p.sizeCurrent??>${p.sizeCurrent?c}<#else>0#if>,
"emailFeedDisabled": <#if p.emailFeedDisabled??>${p.emailFeedDisabled?string("true","false")}<#else>false#if>,
- "persondescription": <#if p.persondescription??>"${stringUtils.stripUnsafeHTML(p.persondescription.content)}"<#else>null#if>
+ "persondescription": <#if p.persondescription??>"${stringUtils.stripUnsafeHTML(p.persondescription.content)}"<#else>null#if>,
+ "authorizationStatus": <#if p.authorizationStatus??>"${p.authorizationStatus}"<#else>null#if>,
+ "isDeleted": <#if p.isDeleted??>"${p.isDeleted?string("true","false")}"<#else>false#if>,
+ "isAdminAuthority": ${people.isAdmin(person)?string("true","false")}
#escape>
#macro>
diff --git a/source/java/org/alfresco/repo/web/scripts/RepositoryContainer.java b/source/java/org/alfresco/repo/web/scripts/RepositoryContainer.java
index 742fd664af..2c71ba178e 100644
--- a/source/java/org/alfresco/repo/web/scripts/RepositoryContainer.java
+++ b/source/java/org/alfresco/repo/web/scripts/RepositoryContainer.java
@@ -39,6 +39,7 @@ import org.alfresco.repo.transaction.AlfrescoTransactionSupport.TxnReadState;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.repo.transaction.TooBusyException;
+import org.alfresco.repo.web.scripts.bean.LoginPost;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.TemplateService;
import org.alfresco.service.cmr.security.AuthorityService;
@@ -570,7 +571,13 @@ public class RepositoryContainer extends AbstractRuntimeContainer
try
{
- transactionService.getRetryingTransactionHelper().doInTransaction(work, readonly, requiresNew);
+ RetryingTransactionHelper transactionHelper = transactionService.getRetryingTransactionHelper();
+ if(script instanceof LoginPost)
+ {
+ //login script requires read-write transaction because of authorization intercepter
+ transactionHelper.setForceWritable(true);
+ }
+ transactionHelper.doInTransaction(work, readonly, requiresNew);
}
catch (TooBusyException e)
{
diff --git a/source/test-java/org/alfresco/repo/remoteticket/RemoteAlfrescoTicketServiceTest.java b/source/test-java/org/alfresco/repo/remoteticket/RemoteAlfrescoTicketServiceTest.java
index e8a7ff5ac1..7bc5e972fd 100644
--- a/source/test-java/org/alfresco/repo/remoteticket/RemoteAlfrescoTicketServiceTest.java
+++ b/source/test-java/org/alfresco/repo/remoteticket/RemoteAlfrescoTicketServiceTest.java
@@ -24,6 +24,7 @@ import org.alfresco.repo.remoteconnector.LocalWebScriptConnectorServiceImpl;
import org.alfresco.repo.remotecredentials.PasswordCredentialsInfoImpl;
import org.alfresco.repo.security.authentication.AuthenticationException;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
+import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.web.scripts.BaseWebScriptTest;
import org.alfresco.service.cmr.remotecredentials.BaseCredentialsInfo;
import org.alfresco.service.cmr.remotecredentials.RemoteCredentialsService;
@@ -51,6 +52,7 @@ public class RemoteAlfrescoTicketServiceTest extends BaseWebScriptTest
private static final String INVALID_REMOTE_SYSTEM_ID = "testingInvalidRemoteSystem";
private MutableAuthenticationService authenticationService;
+ private RetryingTransactionHelper retryingTransactionHelper;
private PersonService personService;
private RemoteAlfrescoTicketService remoteAlfrescoTicketService;
@@ -68,7 +70,8 @@ public class RemoteAlfrescoTicketServiceTest extends BaseWebScriptTest
protected void setUp() throws Exception
{
super.setUp();
-
+
+ this.retryingTransactionHelper = (RetryingTransactionHelper)getServer().getApplicationContext().getBean("retryingTransactionHelper");
this.authenticationService = (MutableAuthenticationService)getServer().getApplicationContext().getBean("AuthenticationService");
this.personService = (PersonService)getServer().getApplicationContext().getBean("PersonService");
@@ -382,12 +385,22 @@ public class RemoteAlfrescoTicketServiceTest extends BaseWebScriptTest
creds.setRemotePassword("INVALID");
remoteCredentialsService.updateCredentials(creds);
- try
+ retryingTransactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback()
{
- remoteAlfrescoTicketService.refetchAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
- fail("Shouldn't be able to refetch with wrong details");
- }
- catch(AuthenticationException e) {}
+ public Void execute()
+
+ {
+ try
+ {
+ remoteAlfrescoTicketService.refetchAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
+ fail("Shouldn't be able to refetch with wrong details");
+ }
+ catch (AuthenticationException e)
+ {
+ }
+ return null;
+ }
+ }, false, true); // after MNT-13871, POST api/login webscript now requires read-write transaction
// Check it was still marked as invalid, despite a read only transaction
creds = (PasswordCredentialsInfoImpl)remoteCredentialsService.getPersonCredentials(TEST_REMOTE_SYSTEM_ID);