From 474565e135146a63ee734aebe8bf1837f0cb0e86 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Thu, 27 Nov 2014 16:21:33 +0100 Subject: [PATCH] OO-1331,CL-338: enhancement to the REST API --- .../org/olat/admin/user/UserCreateController.java | 2 +- .../olat/admin/user/imp/UserImportController.java | 2 +- .../java/org/olat/basesecurity/AuthHelper.java | 14 +++++++------- .../java/org/olat/basesecurity/BaseSecurity.java | 4 ++-- .../olat/basesecurity/BaseSecurityManager.java | 8 +++++--- .../olat/ldap/manager/LDAPLoginManagerImpl.java | 2 +- .../oauth/ui/OAuthRegistrationController.java | 2 +- .../olat/registration/RegistrationManager.java | 2 +- .../org/olat/repository/RepositoryManager.java | 5 ++++- .../repository/RepositoryEntryResource.java | 7 ++++--- .../repository/course/CoursesWebService.java | 14 ++++++++++++-- .../org/olat/restapi/support/ObjectFactory.java | 1 + .../restapi/support/vo/RepositoryEntryVO.java | 14 +++++++++++++- .../ShibbolethRegistrationController.java | 2 +- src/main/java/org/olat/user/UserModule.java | 2 +- .../org/olat/user/restapi/UserWebService.java | 15 ++++++++++----- .../basesecurity/BaseSecurityManagerTest.java | 4 ++-- .../GetIdentitiesByPowerSearchTest.java | 8 ++++---- src/test/java/org/olat/ldap/LDAPLoginTest.java | 14 +++++++------- .../olat/repository/RepositoryManagerTest.java | 4 +++- .../manager/RepositoryEntryStatisticsDAOTest.java | 4 ++-- src/test/java/org/olat/test/JunitTestHelper.java | 6 +++--- .../org/olat/user/EmailCheckPerformanceTest.java | 2 +- src/test/java/org/olat/user/UserManagerTest.java | 2 +- .../olat/user/UserPropertiesPerformanceTest.java | 2 +- src/test/java/org/olat/user/UserTest.java | 8 ++++---- 26 files changed, 93 insertions(+), 57 deletions(-) diff --git a/src/main/java/org/olat/admin/user/UserCreateController.java b/src/main/java/org/olat/admin/user/UserCreateController.java index 4138566a936..7eb26007e3f 100644 --- a/src/main/java/org/olat/admin/user/UserCreateController.java +++ b/src/main/java/org/olat/admin/user/UserCreateController.java @@ -343,7 +343,7 @@ class NewUserForm extends FormBasicController { newUser.getPreferences().setLanguage(lang); newUser.getPreferences().setInformSessionTimeout(true); // Save everything in database - Identity ident = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(username, pwd, newUser); + Identity ident = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(username, null, pwd, newUser); return ident; } diff --git a/src/main/java/org/olat/admin/user/imp/UserImportController.java b/src/main/java/org/olat/admin/user/imp/UserImportController.java index 9d71af7731a..fd0a7ead087 100644 --- a/src/main/java/org/olat/admin/user/imp/UserImportController.java +++ b/src/main/java/org/olat/admin/user/imp/UserImportController.java @@ -177,7 +177,7 @@ public class UserImportController extends BasicController { report.incrementCreatedUser(); report.incrementUpdatedShibboletAuthentication(); } else { - ident = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(login, pwd, newUser); + ident = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(login, null, pwd, newUser); report.incrementCreatedUser(); } return ident; diff --git a/src/main/java/org/olat/basesecurity/AuthHelper.java b/src/main/java/org/olat/basesecurity/AuthHelper.java index c1fa3934902..3aaa608f680 100644 --- a/src/main/java/org/olat/basesecurity/AuthHelper.java +++ b/src/main/java/org/olat/basesecurity/AuthHelper.java @@ -333,14 +333,14 @@ public class AuthHelper { * @param newUser unpersisted user * @return Identity */ - private static Identity createAndPersistIdentityAndUser(String loginName, String pwd, User newUser) { + private static Identity createAndPersistIdentityAndUser(String loginName, String externalId, String pwd, User newUser) { Identity ident = null; if (pwd == null) { // when no password is used the provider must be set to null to not generate // an OLAT authentication token. See method doku. - ident = BaseSecurityManager.getInstance().createAndPersistIdentityAndUser(loginName, newUser, null, null); + ident = BaseSecurityManager.getInstance().createAndPersistIdentityAndUser(loginName, externalId, newUser, null, null); } else { - ident = BaseSecurityManager.getInstance().createAndPersistIdentityAndUser(loginName, newUser, + ident = BaseSecurityManager.getInstance().createAndPersistIdentityAndUser(loginName, externalId, newUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), loginName, pwd); } // TODO: Tracing message @@ -357,8 +357,8 @@ public class AuthHelper { * @param newUser unpersisted users * @return Identity */ - public static Identity createAndPersistIdentityAndUserWithUserGroup(String loginName, String pwd, User newUser) { - Identity ident = createAndPersistIdentityAndUser(loginName, pwd, newUser); + public static Identity createAndPersistIdentityAndUserWithUserGroup(String loginName, String externalId, String pwd, User newUser) { + Identity ident = createAndPersistIdentityAndUser(loginName, externalId, pwd, newUser); // Add user to system users group BaseSecurity securityManager = BaseSecurityManager.getInstance(); SecurityGroup olatuserGroup = securityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS); @@ -376,9 +376,9 @@ public class AuthHelper { * @param newUser * @return */ - public static Identity createAndPersistIdentityAndUserWithUserGroup(String loginName, String provider, String authusername, User newUser) { + public static Identity createAndPersistIdentityAndUserWithUserGroup(String loginName, String externalId, String provider, String authusername, User newUser) { BaseSecurity securityManager = BaseSecurityManager.getInstance(); - Identity ident = securityManager.createAndPersistIdentityAndUser(loginName, newUser, provider, authusername, null); + Identity ident = securityManager.createAndPersistIdentityAndUser(loginName, externalId, newUser, provider, authusername, null); // Add user to system users group SecurityGroup olatuserGroup = securityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS); securityManager.addIdentityToSecurityGroup(ident, olatuserGroup); diff --git a/src/main/java/org/olat/basesecurity/BaseSecurity.java b/src/main/java/org/olat/basesecurity/BaseSecurity.java index 35f256c9243..3b99666aaf1 100644 --- a/src/main/java/org/olat/basesecurity/BaseSecurity.java +++ b/src/main/java/org/olat/basesecurity/BaseSecurity.java @@ -288,7 +288,7 @@ public interface BaseSecurity { * @param credential the credentials or null if not used * @return the new identity */ - public Identity createAndPersistIdentityAndUser(String username, User user, String provider, String authusername); + public Identity createAndPersistIdentityAndUser(String username, String externalId, User user, String provider, String authusername); /** * @param username the username @@ -300,7 +300,7 @@ public interface BaseSecurity { * @param password The password which will be used as credentials (not hashed it) * @return the new identity */ - public Identity createAndPersistIdentityAndUser(String username, User user, String provider, String authusername, String password); + public Identity createAndPersistIdentityAndUser(String username, String externalId, User user, String provider, String authusername, String password); /** * Return the List of associated Authentications. diff --git a/src/main/java/org/olat/basesecurity/BaseSecurityManager.java b/src/main/java/org/olat/basesecurity/BaseSecurityManager.java index 55b1fe8a18a..1153657b189 100644 --- a/src/main/java/org/olat/basesecurity/BaseSecurityManager.java +++ b/src/main/java/org/olat/basesecurity/BaseSecurityManager.java @@ -700,9 +700,10 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity { * @return Identity */ @Override - public Identity createAndPersistIdentityAndUser(String username, User user, String provider, String authusername) { + public Identity createAndPersistIdentityAndUser(String username, String externalId, User user, String provider, String authusername) { dbInstance.getCurrentEntityManager().persist(user); IdentityImpl iimpl = new IdentityImpl(username, user); + iimpl.setExternalId(externalId); dbInstance.getCurrentEntityManager().persist(iimpl); if (provider != null) { createAndPersistAuthentication(iimpl, provider, authusername, null, null); @@ -722,9 +723,10 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity { * @return Identity */ @Override - public Identity createAndPersistIdentityAndUser(String username, User user, String provider, String authusername, String credential) { + public Identity createAndPersistIdentityAndUser(String username, String externalId, User user, String provider, String authusername, String credential) { dbInstance.getCurrentEntityManager().persist(user); IdentityImpl iimpl = new IdentityImpl(username, user); + iimpl.setExternalId(externalId); dbInstance.getCurrentEntityManager().persist(iimpl); if (provider != null) { createAndPersistAuthentication(iimpl, provider, authusername, credential, LoginModule.getDefaultHashAlgorithm()); @@ -1837,7 +1839,7 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity { // Create it lazy on demand User guestUser = UserManager.getInstance().createUser(trans.translate("user.guest"), null, null); guestUser.getPreferences().setLanguage(locale.toString()); - guestIdentity = createAndPersistIdentityAndUser(guestUsername, guestUser, null, null, null); + guestIdentity = createAndPersistIdentityAndUser(guestUsername, null, guestUser, null, null, null); SecurityGroup anonymousGroup = findSecurityGroupByName(Constants.GROUP_ANONYMOUS); addIdentityToSecurityGroup(guestIdentity, anonymousGroup); } else if (!guestIdentity.getUser().getProperty(UserConstants.FIRSTNAME, locale).equals(trans.translate("user.guest"))) { diff --git a/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java b/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java index 840e4b1f1d1..1b86a7b0471 100644 --- a/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java +++ b/src/main/java/org/olat/ldap/manager/LDAPLoginManagerImpl.java @@ -447,7 +447,7 @@ public class LDAPLoginManagerImpl implements LDAPLoginManager, GenericEventListe } // Create Identity - Identity identity = securityManager.createAndPersistIdentityAndUser(uid, user, LDAPAuthenticationController.PROVIDER_LDAP, uid); + Identity identity = securityManager.createAndPersistIdentityAndUser(uid, null, user, LDAPAuthenticationController.PROVIDER_LDAP, uid); // Add to SecurityGroup LDAP SecurityGroup secGroup = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP); securityManager.addIdentityToSecurityGroup(identity, secGroup); diff --git a/src/main/java/org/olat/login/oauth/ui/OAuthRegistrationController.java b/src/main/java/org/olat/login/oauth/ui/OAuthRegistrationController.java index c95f571f1e9..bf02e9751fb 100644 --- a/src/main/java/org/olat/login/oauth/ui/OAuthRegistrationController.java +++ b/src/main/java/org/olat/login/oauth/ui/OAuthRegistrationController.java @@ -212,7 +212,7 @@ public class OAuthRegistrationController extends FormBasicController { } else { id = username; } - authenticatedIdentity = securityManager.createAndPersistIdentityAndUser(username, newUser, registration.getAuthProvider(), id, null); + authenticatedIdentity = securityManager.createAndPersistIdentityAndUser(username, null, newUser, registration.getAuthProvider(), id, null); // Add user to system users group SecurityGroup olatuserGroup = securityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS); securityManager.addIdentityToSecurityGroup(authenticatedIdentity, olatuserGroup); diff --git a/src/main/java/org/olat/registration/RegistrationManager.java b/src/main/java/org/olat/registration/RegistrationManager.java index eb344b90894..4ce1ac27c71 100644 --- a/src/main/java/org/olat/registration/RegistrationManager.java +++ b/src/main/java/org/olat/registration/RegistrationManager.java @@ -172,7 +172,7 @@ public class RegistrationManager extends BasicManager { * @return the newly created subject or null */ public Identity createNewUserAndIdentityFromTemporaryKey(String login, String pwd, User myUser, TemporaryKeyImpl tk) { - Identity identity = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(login, pwd, myUser); + Identity identity = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(login, null, pwd, myUser); if (identity == null) return null; deleteTemporaryKey(tk); return identity; diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java index 814b9f63af2..1e30f223787 100644 --- a/src/main/java/org/olat/repository/RepositoryManager.java +++ b/src/main/java/org/olat/repository/RepositoryManager.java @@ -680,7 +680,7 @@ public class RepositoryManager extends BasicManager { * @return */ public RepositoryEntry setDescriptionAndName(final RepositoryEntry re, String displayName, String description, - String externalId, String externalRef, String managedFlags, RepositoryEntryLifecycle cycle) { + String authors, String externalId, String externalRef, String managedFlags, RepositoryEntryLifecycle cycle) { RepositoryEntry reloadedRe = loadForUpdate(re); if(StringHelper.containsNonWhitespace(displayName)) { reloadedRe.setDisplayname(displayName); @@ -688,6 +688,9 @@ public class RepositoryManager extends BasicManager { if(StringHelper.containsNonWhitespace(description)) { reloadedRe.setDescription(description); } + if(StringHelper.containsNonWhitespace(authors)) { + reloadedRe.setAuthors(authors); + } if(StringHelper.containsNonWhitespace(externalId)) { reloadedRe.setExternalId(externalId); } diff --git a/src/main/java/org/olat/restapi/repository/RepositoryEntryResource.java b/src/main/java/org/olat/restapi/repository/RepositoryEntryResource.java index f97a28e9d7a..e2d53836391 100644 --- a/src/main/java/org/olat/restapi/repository/RepositoryEntryResource.java +++ b/src/main/java/org/olat/restapi/repository/RepositoryEntryResource.java @@ -541,7 +541,7 @@ public class RepositoryEntryResource { } RepositoryEntry reloaded = repositoryManager.setDescriptionAndName(re, vo.getDisplayname(), null, - vo.getExternalId(), vo.getExternalRef(), vo.getManagedFlags(), lifecycle); + vo.getAuthors(), vo.getExternalId(), vo.getExternalRef(), vo.getManagedFlags(), lifecycle); RepositoryEntryVO rvo = ObjectFactory.get(reloaded); return Response.ok(rvo).build(); } @@ -582,6 +582,7 @@ public class RepositoryEntryResource { reader = new MultipartReader(request); File tmpFile = reader.getFile(); String displayname = reader.getValue("displayname"); + String authors = reader.getValue("authors"); String description = reader.getValue("description"); String externalId = reader.getValue("externalId"); String externalRef = reader.getValue("externalRef"); @@ -591,7 +592,7 @@ public class RepositoryEntryResource { RepositoryEntry replacedRe; if(tmpFile == null) { replacedRe = repositoryManager.setDescriptionAndName(re, displayname, description, - externalId, externalRef, managedFlags, re.getLifecycle()); + authors, externalId, externalRef, managedFlags, re.getLifecycle()); } else { long length = tmpFile.length(); if(length == 0) { @@ -602,7 +603,7 @@ public class RepositoryEntryResource { return Response.serverError().status(Status.NOT_FOUND).build(); } else { replacedRe = repositoryManager.setDescriptionAndName(replacedRe, displayname, description, - externalId, externalRef, managedFlags, replacedRe.getLifecycle()); + authors, externalId, externalRef, managedFlags, replacedRe.getLifecycle()); } } RepositoryEntryVO vo = ObjectFactory.get(replacedRe); diff --git a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java index ea568c87cb0..024fb05c833 100644 --- a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java +++ b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java @@ -26,6 +26,7 @@ import static org.olat.restapi.security.RestSecurityHelper.isAuthor; import java.io.File; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Locale; import java.util.UUID; @@ -132,8 +133,9 @@ public class CoursesWebService { @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response getCourseList(@QueryParam("start") @DefaultValue("0") Integer start, @QueryParam("limit") @DefaultValue("25") Integer limit, - @QueryParam("managed") Boolean managed, @QueryParam("externalId") String externalId, - @QueryParam("externalRef") String externalRef, + @QueryParam("managed") Boolean managed, + @QueryParam("externalId") String externalId, @QueryParam("externalRef") String externalRef, + @QueryParam("repositoryEntryKey") String repositoryEntryKey, @Context HttpServletRequest httpRequest, @Context Request request) { RepositoryManager rm = RepositoryManager.getInstance(); @@ -141,12 +143,20 @@ public class CoursesWebService { Identity identity = getIdentity(httpRequest); SearchRepositoryEntryParameters params = new SearchRepositoryEntryParameters(identity, roles, CourseModule.getCourseTypeName()); params.setManaged(managed); + if(StringHelper.containsNonWhitespace(externalId)) { params.setExternalId(externalId); } if(StringHelper.containsNonWhitespace(externalRef)) { params.setExternalRef(externalRef); } + if(StringHelper.containsNonWhitespace(repositoryEntryKey) && StringHelper.isLong(repositoryEntryKey)) { + try { + params.setRepositoryEntryKeys(Collections.singletonList(new Long(repositoryEntryKey))); + } catch (NumberFormatException e) { + log.error("Cannot parse the following repository entry key: " + repositoryEntryKey); + } + } if(MediaTypeVariants.isPaged(httpRequest, request)) { int totalCount = rm.countGenericANDQueryWithRolesRestriction(params); diff --git a/src/main/java/org/olat/restapi/support/ObjectFactory.java b/src/main/java/org/olat/restapi/support/ObjectFactory.java index 681f9565f6a..fd948827444 100644 --- a/src/main/java/org/olat/restapi/support/ObjectFactory.java +++ b/src/main/java/org/olat/restapi/support/ObjectFactory.java @@ -158,6 +158,7 @@ public class ObjectFactory { vo.setSoftkey(entry.getSoftkey()); vo.setResourcename(entry.getResourcename()); vo.setDisplayname(entry.getDisplayname()); + vo.setAuthors(entry.getAuthors()); vo.setResourceableId(entry.getResourceableId()); vo.setResourceableTypeName(entry.getResourceableTypeName()); OLATResource resource = entry.getOlatResource(); diff --git a/src/main/java/org/olat/restapi/support/vo/RepositoryEntryVO.java b/src/main/java/org/olat/restapi/support/vo/RepositoryEntryVO.java index 543f3cf958f..96513d2ce2c 100644 --- a/src/main/java/org/olat/restapi/support/vo/RepositoryEntryVO.java +++ b/src/main/java/org/olat/restapi/support/vo/RepositoryEntryVO.java @@ -21,6 +21,7 @@ package org.olat.restapi.support.vo; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; /** @@ -35,16 +36,19 @@ import javax.xml.bind.annotation.XmlRootElement; @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "repositoryEntryVO") public class RepositoryEntryVO { + private Long key; private String softkey; private String resourcename; private String displayname; + @XmlAttribute(name="authors",required=false) + private String authors; private String externalId; private String externalRef; private String managedFlags; private Long resourceableId; private String resourceableTypeName; - + private Long olatResourceId; private String olatResourceTypeName; @@ -86,6 +90,14 @@ public class RepositoryEntryVO { this.displayname = displayname; } + public String getAuthors() { + return authors; + } + + public void setAuthors(String authors) { + this.authors = authors; + } + public String getExternalId() { return externalId; } diff --git a/src/main/java/org/olat/shibboleth/ShibbolethRegistrationController.java b/src/main/java/org/olat/shibboleth/ShibbolethRegistrationController.java index 8a49330b9f6..2b260c27a87 100644 --- a/src/main/java/org/olat/shibboleth/ShibbolethRegistrationController.java +++ b/src/main/java/org/olat/shibboleth/ShibbolethRegistrationController.java @@ -351,7 +351,7 @@ public class ShibbolethRegistrationController extends DefaultController implemen user.setProperty(UserConstants.INSTITUTIONALEMAIL, institutionalEmail); } user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, shibbolethAttributesMap.get(ShibbolethModule.getInstitutionalUserIdentifier())); - identity = secMgr.createAndPersistIdentityAndUser(choosenLogin, user, ShibbolethDispatcher.PROVIDER_SHIB, shibbolethUniqueID); + identity = secMgr.createAndPersistIdentityAndUser(choosenLogin, null, user, ShibbolethDispatcher.PROVIDER_SHIB, shibbolethUniqueID); SecurityGroup olatUserGroup = secMgr.findSecurityGroupByName(Constants.GROUP_OLATUSERS); secMgr.addIdentityToSecurityGroup(identity, olatUserGroup); // tell system that this user did accept the disclaimer diff --git a/src/main/java/org/olat/user/UserModule.java b/src/main/java/org/olat/user/UserModule.java index 6167076d159..c17965d362e 100644 --- a/src/main/java/org/olat/user/UserModule.java +++ b/src/main/java/org/olat/user/UserModule.java @@ -242,7 +242,7 @@ public class UserModule extends AbstractOLATModule { // Now finally create that user thing on the database with all // credentials, person etc. in one transation context! - identity = BaseSecurityManager.getInstance().createAndPersistIdentityAndUser(user.getUserName(), newUser, authenticationProviderConstant, + identity = BaseSecurityManager.getInstance().createAndPersistIdentityAndUser(user.getUserName(), null, newUser, authenticationProviderConstant, user.getUserName(), user.getPassword()); if (identity == null) { throw new OLATRuntimeException(this.getClass(), "Error, could not create user and subject with name " + user.getUserName(), null); diff --git a/src/main/java/org/olat/user/restapi/UserWebService.java b/src/main/java/org/olat/user/restapi/UserWebService.java index c71bd96f6bb..7333c2d82de 100644 --- a/src/main/java/org/olat/user/restapi/UserWebService.java +++ b/src/main/java/org/olat/user/restapi/UserWebService.java @@ -145,8 +145,9 @@ public class UserWebService { */ @GET @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) - public Response getUserListQuery(@QueryParam("login") String login, @QueryParam("authProvider") String authProvider, - @QueryParam("authUsername") String authUsername, + public Response getUserListQuery(@QueryParam("login") String login, + @QueryParam("authProvider") String authProvider, @QueryParam("authUsername") String authUsername, + @QueryParam("statusVisibleLimit") String statusVisibleLimit, @Context UriInfo uriInfo, @Context HttpServletRequest httpRequest) { if(!isUserManager(httpRequest)) { @@ -185,8 +186,12 @@ public class UserWebService { userProps.put(handler.getName(), value); } } - - identities = BaseSecurityManager.getInstance().getIdentitiesByPowerSearch(login, userProps, true, null, null, authProviders, null, null, null, null, Identity.STATUS_VISIBLE_LIMIT); + + Integer status = Identity.STATUS_VISIBLE_LIMIT; + if("all".equalsIgnoreCase(statusVisibleLimit)) { + status = null; + } + identities = BaseSecurityManager.getInstance().getIdentitiesByPowerSearch(login, userProps, true, null, null, authProviders, null, null, null, null, status); } int count = 0; @@ -257,7 +262,7 @@ public class UserWebService { List<ErrorVO> errors = validateUser(null, user, request); if(errors.isEmpty()) { User newUser = UserManager.getInstance().createUser(user.getFirstName(), user.getLastName(), user.getEmail()); - Identity id = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(user.getLogin(), user.getPassword(), newUser); + Identity id = AuthHelper.createAndPersistIdentityAndUserWithUserGroup(user.getLogin(), user.getExternalId(), user.getPassword(), newUser); post(newUser, user, getLocale(request)); UserManager.getInstance().updateUser(newUser); return Response.ok(get(id)).build(); diff --git a/src/test/java/org/olat/basesecurity/BaseSecurityManagerTest.java b/src/test/java/org/olat/basesecurity/BaseSecurityManagerTest.java index 32c55c4e893..0ada5e6e243 100644 --- a/src/test/java/org/olat/basesecurity/BaseSecurityManagerTest.java +++ b/src/test/java/org/olat/basesecurity/BaseSecurityManagerTest.java @@ -67,7 +67,7 @@ public class BaseSecurityManagerTest extends OlatTestCase { public void testCreateIdentity() { String username = "createid-" + UUID.randomUUID().toString(); User user = userManager.createUser("first" + username, "last" + username, username + "@frentix.com"); - Identity identity = securityManager.createAndPersistIdentityAndUser(username, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), username, "secret"); + Identity identity = securityManager.createAndPersistIdentityAndUser(username, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), username, "secret"); dbInstance.commitAndCloseSession(); Assert.assertNotNull(identity); @@ -89,7 +89,7 @@ public class BaseSecurityManagerTest extends OlatTestCase { User user = userManager.createUser("first" + username, "last" + username, username + "@frentix.com"); user.setProperty(UserConstants.COUNTRY, ""); user.setProperty(UserConstants.CITY, "Basel"); - Identity identity = securityManager.createAndPersistIdentityAndUser(username, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), username, "secret"); + Identity identity = securityManager.createAndPersistIdentityAndUser(username, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), username, "secret"); dbInstance.commitAndCloseSession(); //reload and update diff --git a/src/test/java/org/olat/basesecurity/GetIdentitiesByPowerSearchTest.java b/src/test/java/org/olat/basesecurity/GetIdentitiesByPowerSearchTest.java index f3d1792b15e..2bc3ea68c97 100644 --- a/src/test/java/org/olat/basesecurity/GetIdentitiesByPowerSearchTest.java +++ b/src/test/java/org/olat/basesecurity/GetIdentitiesByPowerSearchTest.java @@ -544,7 +544,7 @@ public class GetIdentitiesByPowerSearchTest extends OlatTestCase { User onePropUser = UserManager.getInstance().createUser("onepropuser", "onepropuser", one + "@lustig.com"); onePropUser.setProperty(UserConstants.FIRSTNAME, "one"); - Identity onePropIdentity = baseSecurityManager.createAndPersistIdentityAndUser(oneUsername, onePropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), oneUsername, "ppp"); + Identity onePropIdentity = baseSecurityManager.createAndPersistIdentityAndUser(oneUsername, null, onePropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), oneUsername, "ppp"); Assert.assertNotNull(onePropIdentity); String two = "two" + UUID.randomUUID().toString().replace("-", ""); @@ -553,7 +553,7 @@ public class GetIdentitiesByPowerSearchTest extends OlatTestCase { User twoPropUser = UserManager.getInstance().createUser("twopropuser", "twopropuser", two + "@lustig.com"); twoPropUser.setProperty(UserConstants.FIRSTNAME, "two"); twoPropUser.setProperty(UserConstants.LASTNAME, "prop"); - Identity twoPropIdentity = baseSecurityManager.createAndPersistIdentityAndUser(twoUsername, twoPropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), twoUsername, "ppp"); + Identity twoPropIdentity = baseSecurityManager.createAndPersistIdentityAndUser(twoUsername, null, twoPropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), twoUsername, "ppp"); Assert.assertNotNull(twoPropIdentity); DBFactory.getInstance().closeSession(); @@ -633,7 +633,7 @@ public class GetIdentitiesByPowerSearchTest extends OlatTestCase { user.setProperty(UserConstants.INSTITUTIONALEMAIL, multiInst + "@lustig.com"); user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, multiInst); user.setProperty(UserConstants.CITY, "züri"); - Identity identity = baseSecurityManager.createAndPersistIdentityAndUser(multiUsername, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), multiUsername, "ppp"); + Identity identity = baseSecurityManager.createAndPersistIdentityAndUser(multiUsername, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), multiUsername, "ppp"); Assert.assertNotNull(identity); // commit @@ -749,7 +749,7 @@ public class GetIdentitiesByPowerSearchTest extends OlatTestCase { User user = UserManager.getInstance().createUser(loginName+"_Firstname", loginName + "_Lastname", loginName + "@lustig.com"); user.setProperty(UserConstants.INSTITUTIONALNAME, "unizh2"); user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "12-345-678-908"); - ident = baseSecurityManager.createAndPersistIdentityAndUser(loginName, user, authProvider, loginName, "ppp"); + ident = baseSecurityManager.createAndPersistIdentityAndUser(loginName, null, user, authProvider, loginName, "ppp"); return ident; } } diff --git a/src/test/java/org/olat/ldap/LDAPLoginTest.java b/src/test/java/org/olat/ldap/LDAPLoginTest.java index 58396671309..9212fa42e4f 100644 --- a/src/test/java/org/olat/ldap/LDAPLoginTest.java +++ b/src/test/java/org/olat/ldap/LDAPLoginTest.java @@ -181,7 +181,7 @@ public class LDAPLoginTest extends OlatTestCase { try { //create user but with different attributes - must fail since user already exists User user = UserManager.getInstance().createUser("klaus", "Meier", "klaus@meier.ch"); - Identity identity = securityManager.createAndPersistIdentityAndUser("kmeier", user, "LDAP", "kmeier"); + Identity identity = securityManager.createAndPersistIdentityAndUser("kmeier", null, user, "LDAP", "kmeier"); SecurityGroup secGroup = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP); securityManager.addIdentityToSecurityGroup(identity, secGroup); @@ -200,7 +200,7 @@ public class LDAPLoginTest extends OlatTestCase { } else { //create user but with different attributes - must fail since user already exists User user = UserManager.getInstance().createUser("klaus", "Meier", "klaus@meier.ch"); - Identity identity = securityManager.createAndPersistIdentityAndUser("kmeier", user, "LDAP", "kmeier"); + Identity identity = securityManager.createAndPersistIdentityAndUser("kmeier", null, user, "LDAP", "kmeier"); SecurityGroup secGroup = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP); securityManager.addIdentityToSecurityGroup(identity, secGroup); // simulate closed session (user adding from startup job) @@ -264,14 +264,14 @@ public class LDAPLoginTest extends OlatTestCase { //create some users in LDAPSecurityGroup User user = UserManager.getInstance().createUser("grollia", "wa", "gorrila@olat.org"); - Identity identity = securityManager.createAndPersistIdentityAndUser("gorilla", user, "LDAP", "gorrila"); + Identity identity = securityManager.createAndPersistIdentityAndUser("gorilla", null,user, "LDAP", "gorrila"); SecurityGroup secGroup1 = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP); securityManager.addIdentityToSecurityGroup(identity, secGroup1); user = UserManager.getInstance().createUser("wer", "immer", "immer@olat.org"); - identity = securityManager.createAndPersistIdentityAndUser("der", user, "LDAP", "der"); + identity = securityManager.createAndPersistIdentityAndUser("der", null, user, "LDAP", "der"); securityManager.addIdentityToSecurityGroup(identity, secGroup1); user = UserManager.getInstance().createUser("die", "da", "chaspi@olat.org"); - identity = securityManager.createAndPersistIdentityAndUser("das", user, "LDAP", "das"); + identity = securityManager.createAndPersistIdentityAndUser("das", null, user, "LDAP", "das"); securityManager.addIdentityToSecurityGroup(identity, secGroup1); // simulate closed session @@ -344,11 +344,11 @@ public class LDAPLoginTest extends OlatTestCase { //create Users in LDAP Group only existing in OLAT User user1 = UserManager.getInstance().createUser("hansi", "hürlima", "hansi@hansli.com"); - Identity identity1 = securityManager.createAndPersistIdentityAndUser("hansi", user1, "LDAP", "hansi"); + Identity identity1 = securityManager.createAndPersistIdentityAndUser("hansi", null, user1, "LDAP", "hansi"); SecurityGroup secGroup1 = securityManager.findSecurityGroupByName(LDAPConstants.SECURITY_GROUP_LDAP); securityManager.addIdentityToSecurityGroup(identity1, secGroup1); user1 = UserManager.getInstance().createUser("chaspi", "meier", "chaspi@hansli.com"); - identity1 = securityManager.createAndPersistIdentityAndUser("chaspi", user1, "LDAP", "chaspi"); + identity1 = securityManager.createAndPersistIdentityAndUser("chaspi", null, user1, "LDAP", "chaspi"); securityManager.addIdentityToSecurityGroup(identity1, secGroup1); //create User to Delete List diff --git a/src/test/java/org/olat/repository/RepositoryManagerTest.java b/src/test/java/org/olat/repository/RepositoryManagerTest.java index 6c830df2c73..01b95493a13 100644 --- a/src/test/java/org/olat/repository/RepositoryManagerTest.java +++ b/src/test/java/org/olat/repository/RepositoryManagerTest.java @@ -1105,6 +1105,7 @@ public class RepositoryManagerTest extends OlatTestCase { String newName = "Brand new name"; String newDesc = "Brand new description"; + String newAuthors = "Me and only me"; String newExternalId = "Brand - ext"; String newExternalRef = "Brand - ref"; String newManagedFlags = RepositoryEntryManagedFlag.access.name(); @@ -1112,13 +1113,14 @@ public class RepositoryManagerTest extends OlatTestCase { RepositoryEntryLifecycle newCycle = lifecycleDao.create("New cycle 1", "New cycle soft 1", false, new Date(), new Date()); - re = repositoryManager.setDescriptionAndName(re, newName, newDesc, newExternalId, newExternalRef, newManagedFlags, newCycle); + re = repositoryManager.setDescriptionAndName(re, newName, newDesc, newAuthors, newExternalId, newExternalRef, newManagedFlags, newCycle); Assert.assertNotNull(re); dbInstance.commitAndCloseSession(); RepositoryEntry reloaded = repositoryManager.lookupRepositoryEntry(re.getKey()); Assert.assertNotNull(reloaded); + Assert.assertEquals("Me and only me", reloaded.getAuthors()); Assert.assertEquals("Brand new name", reloaded.getDisplayname()); Assert.assertEquals("Brand new description", reloaded.getDescription()); Assert.assertEquals("Brand - ext", reloaded.getExternalId()); diff --git a/src/test/java/org/olat/repository/manager/RepositoryEntryStatisticsDAOTest.java b/src/test/java/org/olat/repository/manager/RepositoryEntryStatisticsDAOTest.java index b0a436e9a6f..3375551739c 100644 --- a/src/test/java/org/olat/repository/manager/RepositoryEntryStatisticsDAOTest.java +++ b/src/test/java/org/olat/repository/manager/RepositoryEntryStatisticsDAOTest.java @@ -171,7 +171,7 @@ public class RepositoryEntryStatisticsDAOTest extends OlatTestCase { String description = "Description_testIncrementLaunchCounterSetDescription"; log.info("RepositoryManagerTest: call setDescriptionAndName"); long t3 = System.nanoTime(); - repositoryManager.setDescriptionAndName(repositoryEntryT1, displayName,description, null, null, null, null); + repositoryManager.setDescriptionAndName(repositoryEntryT1, displayName, description, null, null, null, null, null); long t4 = System.nanoTime(); log.info("RepositoryManagerTest: call setDescriptionAndName DONE"); log.info("RepositoryManagerTest: increments take=" + (t2 - t1) + " setDescription take=" + (t4 -t3) ); @@ -272,7 +272,7 @@ public class RepositoryEntryStatisticsDAOTest extends OlatTestCase { if (i % 25 == 0 ) { String displayName = "DisplayName" + i; String description = "Description" + i; - re = repositoryManager.setDescriptionAndName(re, displayName,description, null, null, null, null); + re = repositoryManager.setDescriptionAndName(re, displayName, null, description, null, null, null, null); assertEquals("Wrong displayName value", displayName, re.getDisplayname()); assertEquals("Wrong description value", description, re.getDescription()); } diff --git a/src/test/java/org/olat/test/JunitTestHelper.java b/src/test/java/org/olat/test/JunitTestHelper.java index d242dc949c5..d28fa5f461b 100644 --- a/src/test/java/org/olat/test/JunitTestHelper.java +++ b/src/test/java/org/olat/test/JunitTestHelper.java @@ -126,7 +126,7 @@ public class JunitTestHelper { SecurityGroup group = securityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS); if (group == null) group = securityManager.createAndPersistNamedSecurityGroup(Constants.GROUP_OLATUSERS); User user = UserManager.getInstance().createUser("first" + login, "last" + login, login + "@" + maildomain); - identity = securityManager.createAndPersistIdentityAndUser(login, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), login, PWD); + identity = securityManager.createAndPersistIdentityAndUser(login, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), login, PWD); securityManager.addIdentityToSecurityGroup(identity, group); return identity; } @@ -143,7 +143,7 @@ public class JunitTestHelper { SecurityGroup group = securityManager.findSecurityGroupByName(Constants.GROUP_AUTHORS); if (group == null) group = securityManager.createAndPersistNamedSecurityGroup(Constants.GROUP_AUTHORS); User user = UserManager.getInstance().createUser("first" + login, "last" + login, login + "@" + maildomain); - identity = securityManager.createAndPersistIdentityAndUser(login, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), login, PWD); + identity = securityManager.createAndPersistIdentityAndUser(login, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), login, PWD); securityManager.addIdentityToSecurityGroup(identity, group); return identity; } @@ -160,7 +160,7 @@ public class JunitTestHelper { SecurityGroup group = securityManager.findSecurityGroupByName(Constants.GROUP_ADMIN); if (group == null) group = securityManager.createAndPersistNamedSecurityGroup(Constants.GROUP_ADMIN); User user = UserManager.getInstance().createUser("first" + login, "last" + login, login + "@" + maildomain); - identity = securityManager.createAndPersistIdentityAndUser(login, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), login, PWD); + identity = securityManager.createAndPersistIdentityAndUser(login, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), login, PWD); securityManager.addIdentityToSecurityGroup(identity, group); return identity; } diff --git a/src/test/java/org/olat/user/EmailCheckPerformanceTest.java b/src/test/java/org/olat/user/EmailCheckPerformanceTest.java index 977423e2d57..93bb738bc57 100644 --- a/src/test/java/org/olat/user/EmailCheckPerformanceTest.java +++ b/src/test/java/org/olat/user/EmailCheckPerformanceTest.java @@ -124,7 +124,7 @@ public class EmailCheckPerformanceTest extends OlatTestCase { user.setProperty(UserConstants.INSTITUTIONALEMAIL, username + "@" + institution); user.setProperty(UserConstants.INSTITUTIONALNAME, institution); user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, username + "-" + institution); - AuthHelper.createAndPersistIdentityAndUserWithUserGroup(username, "hokuspokus", user); + AuthHelper.createAndPersistIdentityAndUserWithUserGroup(username, null, "hokuspokus", user); if (i % 10 == 0) { // flush now to obtimize performance diff --git a/src/test/java/org/olat/user/UserManagerTest.java b/src/test/java/org/olat/user/UserManagerTest.java index cff9ebc3f64..d593184888b 100644 --- a/src/test/java/org/olat/user/UserManagerTest.java +++ b/src/test/java/org/olat/user/UserManagerTest.java @@ -128,7 +128,7 @@ public class UserManagerTest extends OlatTestCase { String institutEmail = name + "@openolat.com"; User user = userManager.createUser("first" + name, "last" + name, email); user.setProperty(UserConstants.INSTITUTIONALEMAIL, institutEmail); - Identity identity = securityManager.createAndPersistIdentityAndUser(name, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), name, "secret"); + Identity identity = securityManager.createAndPersistIdentityAndUser(name, null, user, BaseSecurityModule.getDefaultAuthProviderIdentifier(), name, "secret"); Assert.assertNotNull(identity); return identity; } diff --git a/src/test/java/org/olat/user/UserPropertiesPerformanceTest.java b/src/test/java/org/olat/user/UserPropertiesPerformanceTest.java index 9f3c816a888..e423f62510a 100644 --- a/src/test/java/org/olat/user/UserPropertiesPerformanceTest.java +++ b/src/test/java/org/olat/user/UserPropertiesPerformanceTest.java @@ -112,7 +112,7 @@ public class UserPropertiesPerformanceTest extends OlatTestCase { user.setProperty(UserConstants.INSTITUTIONALEMAIL, username + "@" + institution); user.setProperty(UserConstants.INSTITUTIONALNAME, institution); user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, username + "-" + institution); - AuthHelper.createAndPersistIdentityAndUserWithUserGroup(username, "hokuspokus", user); + AuthHelper.createAndPersistIdentityAndUserWithUserGroup(username, null, "hokuspokus", user); if (i % 10 == 0) { // flush now to obtimize performance diff --git a/src/test/java/org/olat/user/UserTest.java b/src/test/java/org/olat/user/UserTest.java index 7913e1f6282..fc276ac5e41 100644 --- a/src/test/java/org/olat/user/UserTest.java +++ b/src/test/java/org/olat/user/UserTest.java @@ -92,7 +92,7 @@ public class UserTest extends OlatTestCase { u1.setProperty(UserConstants.INSTITUTIONALEMAIL, "instjudihui@id.uzh.ch"); u1.setProperty(UserConstants.INSTITUTIONALNAME, "id.uzh.ch"); u1.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "id.uzh.ch"); - i1 = sm.createAndPersistIdentityAndUser(u1.getProperty(UserConstants.LASTNAME, new Locale("en")),u1,"OLAT",u1.getProperty(UserConstants.LASTNAME, new Locale("en")),""); + i1 = sm.createAndPersistIdentityAndUser(u1.getProperty(UserConstants.LASTNAME, new Locale("en")), null, u1, "OLAT", u1.getProperty(UserConstants.LASTNAME, new Locale("en")),""); } else { System.out.println("Does not create user, found 'judihui' already in db"); i1 = sm.findIdentityByName("judihui"); @@ -103,7 +103,7 @@ public class UserTest extends OlatTestCase { u2.setProperty(UserConstants.INSTITUTIONALEMAIL, "instmigros@id.migros.uzh.ch"); u2.setProperty(UserConstants.INSTITUTIONALNAME, "id.migros.uzh.ch"); u2.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "id.uzh.ch"); - i2 = sm.createAndPersistIdentityAndUser(u2.getProperty(UserConstants.LASTNAME, new Locale("en")),u2,"OLAT",u2.getProperty(UserConstants.LASTNAME, new Locale("en")),""); + i2 = sm.createAndPersistIdentityAndUser(u2.getProperty(UserConstants.LASTNAME, new Locale("en")), null, u2, "OLAT", u2.getProperty(UserConstants.LASTNAME, new Locale("en")),""); } else { System.out.println("Does not create user, found 'migros' already in db"); i2 = sm.findIdentityByName("migros"); @@ -114,7 +114,7 @@ public class UserTest extends OlatTestCase { u3.setProperty(UserConstants.INSTITUTIONALEMAIL,"instsalat@id.salat.uzh.ch"); u3.setProperty(UserConstants.INSTITUTIONALNAME, "id.salat.uzh.ch"); u3.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "id.uzh.ch"); - i3 = sm.createAndPersistIdentityAndUser(u3.getProperty(UserConstants.LASTNAME, new Locale("en")),u3,"OLAT",u3.getProperty(UserConstants.LASTNAME, new Locale("en")),""); + i3 = sm.createAndPersistIdentityAndUser(u3.getProperty(UserConstants.LASTNAME, new Locale("en")), null, u3," OLAT", u3.getProperty(UserConstants.LASTNAME, new Locale("en")),""); } else { System.out.println("Does not create user, found 'salat' already in db"); i3 = sm.findIdentityByName("salat"); @@ -472,7 +472,7 @@ public class UserTest extends OlatTestCase { user.setProperty(UserConstants.INSTITUTIONALEMAIL, "inst" + login + "@" + institution); user.setProperty(UserConstants.INSTITUTIONALNAME, institution); user.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, institution); - Identity identity = securityManager.createAndPersistIdentityAndUser(login, user, "OLAT", login,"secret"); + Identity identity = securityManager.createAndPersistIdentityAndUser(login, null, user, "OLAT", login,"secret"); return identity; } -- GitLab