Index: lams_admin/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r298b5600c99cf71c588d5ae57c48a1c66500e3b5 -r63bee30ea13fab1267c0744f26929af1736a1cf9 --- lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 298b5600c99cf71c588d5ae57c48a1c66500e3b5) +++ lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 63bee30ea13fab1267c0744f26929af1736a1cf9) @@ -634,5 +634,6 @@ outcome.authoring.existing.none =none sysadmin.maintain.session.name =Name +sysadmin.alternative.user.id.name =Use alternative parameter name "lis_person_sourcedid" to get user id #======= End labels: Exported 627 labels for en AU ===== Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/LtiConsumerForm.java =================================================================== diff -u -rb77e07f34f5d86b1f69b0d10c08ed78b6acdb955 -r63bee30ea13fab1267c0744f26929af1736a1cf9 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/LtiConsumerForm.java (.../LtiConsumerForm.java) (revision b77e07f34f5d86b1f69b0d10c08ed78b6acdb955) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/LtiConsumerForm.java (.../LtiConsumerForm.java) (revision 63bee30ea13fab1267c0744f26929af1736a1cf9) @@ -30,6 +30,8 @@ public class LtiConsumerForm extends ExtServerCommonForm { private String ltiToolConsumerMonitorRoles; + + private Boolean useAlternativeUseridParameterName; public String getLtiToolConsumerMonitorRoles() { return ltiToolConsumerMonitorRoles; @@ -38,5 +40,13 @@ public void setLtiToolConsumerMonitorRoles(String ltiToolConsumerMonitorRoles) { this.ltiToolConsumerMonitorRoles = ltiToolConsumerMonitorRoles; } + + public Boolean isUseAlternativeUseridParameterName() { + return useAlternativeUseridParameterName; + } + public void setUseAlternativeUseridParameterName(Boolean useAlternativeUseridParameterName) { + this.useAlternativeUseridParameterName = useAlternativeUseridParameterName; + } + } Index: lams_admin/web/integration/ltiConsumer.jsp =================================================================== diff -u -rccc788f07597ad3fde52adb6ff13e964b552c35d -r63bee30ea13fab1267c0744f26929af1736a1cf9 --- lams_admin/web/integration/ltiConsumer.jsp (.../ltiConsumer.jsp) (revision ccc788f07597ad3fde52adb6ff13e964b552c35d) +++ lams_admin/web/integration/ltiConsumer.jsp (.../ltiConsumer.jsp) (revision 63bee30ea13fab1267c0744f26929af1736a1cf9) @@ -92,7 +92,6 @@ - : @@ -111,6 +110,12 @@ + + : + + + + <%@ include file="extLessonForm.jsp"%> Index: lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestLtiServlet.java =================================================================== diff -u -rc975a1230b65f2245c5c77ba413afe97a2816df9 -r63bee30ea13fab1267c0744f26929af1736a1cf9 --- lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestLtiServlet.java (.../LoginRequestLtiServlet.java) (revision c975a1230b65f2245c5c77ba413afe97a2816df9) +++ lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestLtiServlet.java (.../LoginRequestLtiServlet.java) (revision 63bee30ea13fab1267c0744f26929af1736a1cf9) @@ -78,8 +78,15 @@ @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String extUsername = request.getParameter(BasicLTIConstants.USER_ID); + String consumerKey = request.getParameter(LtiUtils.OAUTH_CONSUMER_KEY); + ExtServer extServer = integrationService.getExtServer(consumerKey); + //get user id as "user_id" parameter, or as lis_person_sourcedid (if according option is ON for this LTI server) + String lisPersonSourcedid = request.getParameter(BasicLTIConstants.LIS_PERSON_SOURCEDID); + String extUsername = extServer.isUseAlternativeUseridParameterName() + && StringUtils.isNotBlank(lisPersonSourcedid) ? lisPersonSourcedid + : request.getParameter(BasicLTIConstants.USER_ID); String roles = request.getParameter(BasicLTIConstants.ROLES); + // implicit login params String firstName = request.getParameter(BasicLTIConstants.LIS_PERSON_NAME_GIVEN); String lastName = request.getParameter(BasicLTIConstants.LIS_PERSON_NAME_FAMILY); @@ -88,8 +95,7 @@ String locale = request.getParameter(BasicLTIConstants.LAUNCH_PRESENTATION_LOCALE); String countryIsoCode = LoginRequestLtiServlet.getCountry(locale); String langIsoCode = LoginRequestLtiServlet.getLanguage(locale); - - String consumerKey = request.getParameter(LtiUtils.OAUTH_CONSUMER_KEY); + String resourceLinkId = request.getParameter(BasicLTIConstants.RESOURCE_LINK_ID); String contextId = request.getParameter(BasicLTIConstants.CONTEXT_ID); String contextLabel = request.getParameter(BasicLTIConstants.CONTEXT_LABEL); @@ -100,7 +106,6 @@ } //verify whether request was correctly signed by OAuth - ExtServer extServer = integrationService.getExtServer(consumerKey); String secret = extServer.getServerkey();// retrieve corresponding secret for key from db LtiVerificationResult ltiResult = null; try { Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20191009.sql =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20191009.sql (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20191009.sql (revision 63bee30ea13fab1267c0744f26929af1736a1cf9) @@ -0,0 +1,14 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +----------------------Put all sql statements below here------------------------- + +-- LDEV-4876 Ability for LTI servers to get userId from another request parameter name +ALTER TABLE lams_ext_server_org_map ADD COLUMN `use_alternative_user_id_parameter_name` tinyint(1) DEFAULT '0'; + +----------------------Put all sql statements above here------------------------- + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/integration/ExtServer.java =================================================================== diff -u -r6b58638c62c43fc5b43bc67402d77b347311bc16 -r63bee30ea13fab1267c0744f26929af1736a1cf9 --- lams_common/src/java/org/lamsfoundation/lams/integration/ExtServer.java (.../ExtServer.java) (revision 6b58638c62c43fc5b43bc67402d77b347311bc16) +++ lams_common/src/java/org/lamsfoundation/lams/integration/ExtServer.java (.../ExtServer.java) (revision 63bee30ea13fab1267c0744f26929af1736a1cf9) @@ -115,6 +115,9 @@ */ @Column(name = "lti_consumer_monitor_roles") private String ltiToolConsumerMonitorRoles; + + @Column(name = "use_alternative_user_id_parameter_name") + private Boolean useAlternativeUseridParameterName; public ExtServer() { timeToLiveLoginRequest = 80; @@ -333,4 +336,12 @@ public void setGradebookOnComplete(Boolean gradebookOnComplete) { this.gradebookOnComplete = gradebookOnComplete; } + + public Boolean isUseAlternativeUseridParameterName() { + return useAlternativeUseridParameterName; + } + + public void setUseAlternativeUseridParameterName(Boolean useAlternativeUseridParameterName) { + this.useAlternativeUseridParameterName = useAlternativeUseridParameterName; + } } \ No newline at end of file