Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r546326a1c9952295d30be9caa0457926a5e35bce -r206cb40e4252d7fb4c26b5468d2991d9a91812e5 Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/webservice/Register.java =================================================================== diff -u -r58ac13faf486a9e6d3422d50b6c131e5a3ef6d99 -r206cb40e4252d7fb4c26b5468d2991d9a91812e5 --- lams_central/src/java/org/lamsfoundation/lams/webservice/Register.java (.../Register.java) (revision 58ac13faf486a9e6d3422d50b6c131e5a3ef6d99) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/Register.java (.../Register.java) (revision 206cb40e4252d7fb4c26b5468d2991d9a91812e5) @@ -8,5 +8,12 @@ package org.lamsfoundation.lams.webservice; public interface Register extends java.rmi.Remote { - public boolean createUser(String username, String password, String firstName, String lastName, String email) throws java.rmi.RemoteException; + public boolean createUser(String username, + String password, + String firstName, + String lastName, + String email, + String serverId, + String datetime, + String hash) throws java.rmi.RemoteException; } Index: lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingImpl.java =================================================================== diff -u -r4a2728da7ea82a98b92d3a8b08feb6efa4023b7d -r206cb40e4252d7fb4c26b5468d2991d9a91812e5 --- lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingImpl.java (.../RegisterServiceSoapBindingImpl.java) (revision 4a2728da7ea82a98b92d3a8b08feb6efa4023b7d) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingImpl.java (.../RegisterServiceSoapBindingImpl.java) (revision 206cb40e4252d7fb4c26b5468d2991d9a91812e5) @@ -16,13 +16,14 @@ import org.apache.axis.MessageContext; import org.apache.axis.transport.http.HTTPConstants; import org.apache.log4j.Logger; +import org.lamsfoundation.lams.integration.ExtServerOrgMap; +import org.lamsfoundation.lams.integration.security.Authenticator; +import org.lamsfoundation.lams.integration.service.IIntegrationService; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.themes.CSSThemeVisualElement; import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; import org.lamsfoundation.lams.usermanagement.Organisation; -import org.lamsfoundation.lams.usermanagement.OrganisationState; -import org.lamsfoundation.lams.usermanagement.OrganisationType; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.SupportedLocale; import org.lamsfoundation.lams.usermanagement.User; @@ -37,8 +38,6 @@ Logger log = Logger.getLogger(RegisterServiceSoapBindingImpl.class); - private static final String DEMO_ORG_NAME = "Demo Course"; - private static MessageContext context = MessageContext.getCurrentContext(); private static IUserManagementService service = (IUserManagementService) WebApplicationContextUtils @@ -51,9 +50,16 @@ ((HttpServlet) context.getProperty(HTTPConstants.MC_HTTP_SERVLET)) .getServletContext()).getBean("lessonService"); + private static IIntegrationService integrationService = (IIntegrationService) WebApplicationContextUtils + .getRequiredWebApplicationContext( + ((HttpServlet) context.getProperty(HTTPConstants.MC_HTTP_SERVLET)) + .getServletContext()).getBean("integrationService"); + public boolean createUser(String username, String password, String firstName, String lastName, - String email) throws java.rmi.RemoteException { + String email, String serverId, String datetime, String hash) throws java.rmi.RemoteException { try { + ExtServerOrgMap extServer = integrationService.getExtServerOrgMap(serverId); + Authenticator.authenticate(extServer, datetime, hash); if (service.getUserByLogin(username) != null) return false; User user = new User(); @@ -80,7 +86,7 @@ user.setHtmlTheme(htmlTheme); } service.save(user); - Organisation org = getDemoOrg(user); + Organisation org = extServer.getOrganisation(); addMemberships(user, org); addUserToLessons(user, org); return true; @@ -125,25 +131,4 @@ } } - private Organisation getDemoOrg(User user) { - Organisation org = null; - List list = service.findByProperty(Organisation.class, "name", DEMO_ORG_NAME); - if (list != null && list.size() > 0) { - org = (Organisation) list.get(0); - } - if (org == null) { - org = new Organisation(); - org.setName(DEMO_ORG_NAME); - org.setParentOrganisation(service.getRootOrganisation()); - org.setOrganisationType((OrganisationType) service.findById(OrganisationType.class, - OrganisationType.COURSE_TYPE)); - org.setOrganisationState((OrganisationState) service.findById(OrganisationState.class, - OrganisationState.ACTIVE)); - org.setLocale(getLocale()); - service.saveOrganisation(org, user.getUserId()); - } - log.debug(" Got org " + org.getOrganisationId()); - return org; - } - } Index: lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingSkeleton.java =================================================================== diff -u -r58ac13faf486a9e6d3422d50b6c131e5a3ef6d99 -r206cb40e4252d7fb4c26b5468d2991d9a91812e5 --- lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingSkeleton.java (.../RegisterServiceSoapBindingSkeleton.java) (revision 58ac13faf486a9e6d3422d50b6c131e5a3ef6d99) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/RegisterServiceSoapBindingSkeleton.java (.../RegisterServiceSoapBindingSkeleton.java) (revision 206cb40e4252d7fb4c26b5468d2991d9a91812e5) @@ -36,6 +36,9 @@ new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "firstName"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "lastName"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "email"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "serverId"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "datetime"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), + new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "hash"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false), }; _oper = new org.apache.axis.description.OperationDesc("createUser", _params, new javax.xml.namespace.QName("", "createUserReturn")); _oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean")); @@ -55,9 +58,9 @@ public RegisterServiceSoapBindingSkeleton(org.lamsfoundation.lams.webservice.Register impl) { this.impl = impl; } - public boolean createUser(String username, String password, String firstName, String lastName, String email) throws java.rmi.RemoteException + public boolean createUser(String username, String password, String firstName, String lastName, String email, String serverId, String datetime, String hash) throws java.rmi.RemoteException { - boolean ret = impl.createUser(username, password, firstName, lastName, email); + boolean ret = impl.createUser(username, password, firstName, lastName, email, serverId, datetime, hash); return ret; } Index: lams_central/web/WEB-INF/server-config.wsdd =================================================================== diff -u -r7b248231b899b4c37f17fdd7bd3f5fa4daed3027 -r206cb40e4252d7fb4c26b5468d2991d9a91812e5 --- lams_central/web/WEB-INF/server-config.wsdd (.../server-config.wsdd) (revision 7b248231b899b4c37f17fdd7bd3f5fa4daed3027) +++ lams_central/web/WEB-INF/server-config.wsdd (.../server-config.wsdd) (revision 206cb40e4252d7fb4c26b5468d2991d9a91812e5) @@ -66,7 +66,7 @@ - @@ -77,7 +77,7 @@ - + --> Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java =================================================================== diff -u -r1037e70251273c8c7ff4d9b62068e5fe1f07c87e -r206cb40e4252d7fb4c26b5468d2991d9a91812e5 --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java (.../IIntegrationService.java) (revision 1037e70251273c8c7ff4d9b62068e5fe1f07c87e) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java (.../IIntegrationService.java) (revision 206cb40e4252d7fb4c26b5468d2991d9a91812e5) @@ -50,4 +50,6 @@ List getAllExtServerOrgMaps(); void saveExtServerOrgMap(ExtServerOrgMap map); + + String hash(ExtServerOrgMap serverMap, String extUsername, String timestamp); } Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java =================================================================== diff -u -r4a2728da7ea82a98b92d3a8b08feb6efa4023b7d -r206cb40e4252d7fb4c26b5468d2991d9a91812e5 --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 4a2728da7ea82a98b92d3a8b08feb6efa4023b7d) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 206cb40e4252d7fb4c26b5468d2991d9a91812e5) @@ -263,7 +263,7 @@ } } - private String hash(ExtServerOrgMap serverMap, String extUsername, String timestamp) { + public String hash(ExtServerOrgMap serverMap, String extUsername, String timestamp) { String serverId = serverMap.getServerid(); String serverKey = serverMap.getServerkey(); String plaintext = timestamp.trim().toLowerCase()+extUsername.trim().toLowerCase()+serverId.trim().toLowerCase()+serverKey.trim().toLowerCase();