From 8ebf11b2fcf1b7e6db1290bd9c8ee1dff483385c Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Tue, 28 Apr 2009 13:22:38 +0000 Subject: [PATCH] MOB-620 - Create User, enable/disable account and user quota setting. Mandatory fields now checked on Create User page. Create and Create Another User button now working. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@14102 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/script-services-context.xml | 3 + .../org/alfresco/repo/jscript/People.java | 99 ++++++++++++++----- 2 files changed, 75 insertions(+), 27 deletions(-) diff --git a/config/alfresco/script-services-context.xml b/config/alfresco/script-services-context.xml index c9354bed04..8572372da1 100644 --- a/config/alfresco/script-services-context.xml +++ b/config/alfresco/script-services-context.xml @@ -120,6 +120,9 @@ + + + diff --git a/source/java/org/alfresco/repo/jscript/People.java b/source/java/org/alfresco/repo/jscript/People.java index 9040205049..a437d34415 100644 --- a/source/java/org/alfresco/repo/jscript/People.java +++ b/source/java/org/alfresco/repo/jscript/People.java @@ -44,6 +44,7 @@ import org.alfresco.service.cmr.search.SearchService; import org.alfresco.service.cmr.security.AuthorityService; import org.alfresco.service.cmr.security.AuthorityType; import org.alfresco.service.cmr.security.PersonService; +import org.alfresco.service.cmr.usage.ContentUsageService; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.util.ParameterCheck; import org.alfresco.util.PropertyMap; @@ -64,6 +65,7 @@ public final class People extends BaseScopableProcessorExtension private AuthorityService authorityService; private PersonService personService; private MutableAuthenticationDao mutableAuthenticationDao; + private ContentUsageService contentUsageService; private UserNameGenerator usernameGenerator; private PasswordGenerator passwordGenerator; private StoreRef storeRef; @@ -135,6 +137,14 @@ public final class People extends BaseScopableProcessorExtension this.personService = personService; } + /** + * @param contentUsageService the ContentUsageService to set + */ + public void setContentUsageService(ContentUsageService contentUsageService) + { + this.contentUsageService = contentUsageService; + } + /** * Set the user name generator service * @@ -163,11 +173,13 @@ public final class People extends BaseScopableProcessorExtension public void deletePerson(String username) { personService.deletePerson(username); + mutableAuthenticationDao.deleteUser(username); } /** - * Create a Person with a generated user name + * Create a Person with an optionally generated user name * + * @param userName userName or null for a generated user name * @param firstName firstName * @param lastName lastName * @param emailAddress emailAddress @@ -181,38 +193,44 @@ public final class People extends BaseScopableProcessorExtension * @return the person node (type cm:person) created or null if the person * could not be created */ - public ScriptNode createPerson(String firstName, String lastName, String emailAddress, boolean createUserAccount, boolean setAccountEnabled) + public ScriptNode createPerson(String userName, String firstName, String lastName, String emailAddress, boolean createUserAccount, boolean setAccountEnabled) { ParameterCheck.mandatory("firstName", firstName); ParameterCheck.mandatory("lastName", lastName); - ParameterCheck.mandatory("createUserAccount", createUserAccount); - ParameterCheck.mandatory("setAccountEnabled", setAccountEnabled); + ParameterCheck.mandatory("emailAddress", emailAddress); ScriptNode person = null; - // generate user name - for (int i=0; i < numRetries; i++) + // generate user name if not supplied + if (userName == null) { - String userName = usernameGenerator.generateUserName(firstName, lastName, emailAddress, i); - - // create person if user name does not already exist - if (!personService.personExists(userName)) - { - person = createPerson(userName, firstName, lastName, emailAddress); - - if (createUserAccount) - { - // generate password - char[] password = passwordGenerator.generatePassword().toCharArray(); - - // create account for person with generated userName and password - mutableAuthenticationDao.createUser(userName, password); - mutableAuthenticationDao.setEnabled(userName, setAccountEnabled); - - person.save(); - } - break; - } + for (int i=0; i < numRetries; i++) + { + userName = usernameGenerator.generateUserName(firstName, lastName, emailAddress, i); + + // create person if user name does not already exist + if (!personService.personExists(userName)) + { + break; + } + } + } + + if (userName != null) + { + person = createPerson(userName, firstName, lastName, emailAddress); + + if (createUserAccount) + { + // generate password + char[] password = passwordGenerator.generatePassword().toCharArray(); + + // create account for person with the userName and password + mutableAuthenticationDao.createUser(userName, password); + mutableAuthenticationDao.setEnabled(userName, setAccountEnabled); + + person.save(); + } } return person; @@ -303,13 +321,40 @@ public final class People extends BaseScopableProcessorExtension if (!personService.personExists(userName)) { - NodeRef personRef = personService.createPerson(properties); + NodeRef personRef = personService.createPerson(properties); person = new ScriptNode(personRef, services, getScope()); } return person; } + /** + * Set the content quota in bytes for a person. + * Only the admin authority can set this value. + * + * @param person Person to set quota against. + * @param quota In bytes, a value of -1 means no quota is set + */ + public void setQuota(ScriptNode person, Integer quota) + { + setQuota(person, quota.longValue()); + } + + /** + * Set the content quota in bytes for a person. + * Only the admin authority can set this value. + * + * @param person Person to set quota against. + * @param quota In bytes, a value of -1 means no quota is set + */ + public void setQuota(ScriptNode person, Long quota) + { + if (this.authorityService.isAdminAuthority(AuthenticationUtil.getFullyAuthenticatedUser())) + { + this.contentUsageService.setUserQuota((String)person.getProperties().get(ContentModel.PROP_USERNAME), quota); + } + } + /** * Get the collection of people stored in the repository. * An optional filter query may be provided by which to filter the people collection.