Merged 5.0.N (5.0.3) to 5.1.N (5.1.0) (PARTIAL MERGE)

111836: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3)
      111765: Merged V4.2.5 (4.2.5) to V4.2-BUG-FIX (4.2.6)
         111600: Merged V4.1-BUG-FIX (4.1.11) to PATCHES/V4.2.5 (4.2.5)
            MNT-13871 : Count authorised users as those who've logged in, not total # of person objects
               - Extra changes that are required to make authorization module build green.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.1.N/root@111901 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2015-09-10 20:21:25 +00:00
parent 097f31c151
commit 9b6a1326d7
2 changed files with 5 additions and 92 deletions

View File

@@ -55,7 +55,6 @@ import org.alfresco.repo.policy.PolicyComponent;
import org.alfresco.repo.search.SearcherException;
import org.alfresco.repo.security.authentication.AuthenticationException;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.security.permissions.PermissionServiceSPI;
import org.alfresco.repo.tenant.TenantDomainMismatchException;
import org.alfresco.repo.tenant.TenantService;
@@ -69,8 +68,6 @@ import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ActionService;
import org.alfresco.service.cmr.admin.RepoAdminService;
import org.alfresco.service.cmr.admin.RepoUsage.UsageType;
import org.alfresco.service.cmr.admin.RepoUsageStatus;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.invitation.InvitationException;
import org.alfresco.service.cmr.model.FileFolderService;
@@ -124,7 +121,6 @@ public class PersonServiceImpl extends TransactionListenerAdapter implements Per
private static final String LEAVE = "LEAVE";
public static final String SYSTEM_FOLDER_SHORT_QNAME = "sys:system";
public static final String PEOPLE_FOLDER_SHORT_QNAME = "sys:people";
private static final String SYSTEM_USAGE_WARN_LIMIT_USERS_EXCEEDED_VERBOSE = "system.usage.err.limit_users_exceeded_verbose";
private static final String KEY_POST_TXN_DUPLICATES = "PersonServiceImpl.KEY_POST_TXN_DUPLICATES";
public static final String KEY_ALLOW_UID_UPDATE = "PersonServiceImpl.KEY_ALLOW_UID_UPDATE";
@@ -952,18 +948,6 @@ public class PersonServiceImpl extends TransactionListenerAdapter implements Per
throw new IllegalArgumentException("No username specified when creating the person.");
}
/*
* Check restrictions on the number of users
*/
Long maxUsers = repoAdminService.getRestrictions().getUsers();
if (maxUsers != null)
{
// Get the set of users created in this transaction
Set<String> usersCreated = TransactionalResourceHelper.getSet(KEY_USERS_CREATED);
usersCreated.add(userName);
AlfrescoTransactionSupport.bindListener(this);
}
AuthorityType authorityType = AuthorityType.getAuthorityType(userName);
if (authorityType != AuthorityType.USER)
{
@@ -1258,16 +1242,6 @@ public class PersonServiceImpl extends TransactionListenerAdapter implements Per
beforeDeleteNodeValidationBehaviour.enable();
}
}
/*
* Kick off the transaction listener for create user. It has the side-effect of
* recalculating the number of users.
*/
Long maxUsers = repoAdminService.getRestrictions().getUsers();
if (maxUsers != null)
{
AlfrescoTransactionSupport.bindListener(this);
}
}
/**
@@ -2093,72 +2067,6 @@ public class PersonServiceImpl extends TransactionListenerAdapter implements Per
AlfrescoTransactionSupport.bindListener(this);
}
/**
* {@inheritDoc}
*/
public void beforeCommit(boolean readOnly)
{
// check whether max users has been exceeded
RunAsWork<Long> getMaxUsersWork = new RunAsWork<Long>()
{
@Override
public Long doWork() throws Exception
{
return repoAdminService.getRestrictions().getUsers();
}
};
Long maxUsers = AuthenticationUtil.runAs(getMaxUsersWork, AuthenticationUtil.getSystemUserName());
if(maxUsers == null)
{
return;
}
Long users = AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Long>()
{
public Long doWork() throws Exception
{
repoAdminService.updateUsage(UsageType.USAGE_USERS);
if(logger.isDebugEnabled())
{
logger.debug("Number of users is " + repoAdminService.getUsage().getUsers());
}
return repoAdminService.getUsage().getUsers();
}
} , AuthenticationUtil.getSystemUserName());
// Get the set of users created in this transaction
Set<String> usersCreated = TransactionalResourceHelper.getSet(KEY_USERS_CREATED);
// If we exceed the limit, generate decent message about which users were being created, etc.
if (users > maxUsers)
{
List<String> usersMsg = new ArrayList<String>(5);
int i = 0;
for (String userCreated : usersCreated)
{
i++;
if (i > 5)
{
usersMsg.add(" ... more");
break;
}
else
{
usersMsg.add(userCreated);
}
}
if (logger.isDebugEnabled())
{
logger.debug("Maximum number of users exceeded: " + usersCreated);
}
throw AlfrescoRuntimeException.create(SYSTEM_USAGE_WARN_LIMIT_USERS_EXCEEDED_VERBOSE, maxUsers, usersMsg);
}
// Get the usages and log any warnings
RepoUsageStatus usageStatus = repoAdminService.getUsageStatus();
usageStatus.logMessages(logger);
}
public int countPeople()
{
NodeRef peopleContainer = getPeopleContainer();