Index: lams_build/lib/lams/lams.jar
===================================================================
diff -u -rf0baac16e87a8029d100301ad9c5390244a9f725 -rd92b59deb4419e87265552c6ced3bda1f55ba97a
Binary files differ
Index: lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestLtiServlet.java
===================================================================
diff -u -r667587ecbee72f1d275271b80481f9472929361f -rd92b59deb4419e87265552c6ced3bda1f55ba97a
--- lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestLtiServlet.java (.../LoginRequestLtiServlet.java) (revision 667587ecbee72f1d275271b80481f9472929361f)
+++ lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestLtiServlet.java (.../LoginRequestLtiServlet.java) (revision d92b59deb4419e87265552c6ced3bda1f55ba97a)
@@ -124,14 +124,15 @@
}
ExtServerLessonMap lesson = integrationService.getLtiConsumerLesson(consumerKey, resourceLinkId);
- //determine method based on role parameter
+ //Determine method based on role parameter. Monitor roles can be either LTI standard ones or tool consumer's custom ones set on a sysadmin page
String method;
- if (LtiUtils.isLearner(roles) && !LtiUtils.isStaff(roles) && !LtiUtils.isAdmin(roles)) {
- method = LoginRequestDispatcher.METHOD_LEARNER_STRICT_AUTHENTICATION;
- } else if (lesson == null) {
- method = LoginRequestDispatcher.METHOD_AUTHOR;
+ boolean isCustomMonitorRole = LtiUtils.isToolConsumerCustomRole(roles,
+ extServer.getLtiToolConsumerMonitorRoles());
+ if (LtiUtils.isStaff(roles) || LtiUtils.isAdmin(roles) || isCustomMonitorRole) {
+ method = (lesson == null) ? LoginRequestDispatcher.METHOD_AUTHOR : LoginRequestDispatcher.METHOD_MONITOR;
+
} else {
- method = LoginRequestDispatcher.METHOD_MONITOR;
+ method = LoginRequestDispatcher.METHOD_LEARNER_STRICT_AUTHENTICATION;
}
//provide empty lessonId in case of learner accesses LTI link before teacher authored it
Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/integration/ExtServer.hbm.xml
===================================================================
diff -u -rf0baac16e87a8029d100301ad9c5390244a9f725 -rd92b59deb4419e87265552c6ced3bda1f55ba97a
--- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/integration/ExtServer.hbm.xml (.../ExtServer.hbm.xml) (revision f0baac16e87a8029d100301ad9c5390244a9f725)
+++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/integration/ExtServer.hbm.xml (.../ExtServer.hbm.xml) (revision d92b59deb4419e87265552c6ced3bda1f55ba97a)
@@ -161,6 +161,16 @@
insert="true"
column="time_to_live_login_request"
/>
+
+
rolesToSearchFor = Arrays.asList(toolConsumerCustomRoles.split(","));
+ return hasRole(roles, rolesToSearchFor);
+ }
/**
* Return true
if the user is a learner.