Index: lams_admin/conf/language/lams/ApplicationResources.properties
===================================================================
diff -u -r298b5600c99cf71c588d5ae57c48a1c66500e3b5 -r0c436f5f696e462cb9882e9e0fb1e1e76224044e
--- lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 298b5600c99cf71c588d5ae57c48a1c66500e3b5)
+++ lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 0c436f5f696e462cb9882e9e0fb1e1e76224044e)
@@ -389,6 +389,7 @@
config.show.all.my.lesson.link =Show "All my lessons" link in User's profile
config.display.print.button =Display a print button when the lesson is completed
sysadmin.lessonFinishUrl =Lesson finish callback URL
+sysadmin.logoutUrl =Redirect user after logout to the following URL
admin.servertimezone.server.timezone.management =Server timezone management
admin.servertimezone.title =Server timezone management
admin.servertimezone.select.server.timezone =Please, select server timezone
Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ExtServerForm.java
===================================================================
diff -u -r8d8232ae7142c30068360a2a41bbcccc065e775b -r0c436f5f696e462cb9882e9e0fb1e1e76224044e
--- lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ExtServerForm.java (.../ExtServerForm.java) (revision 8d8232ae7142c30068360a2a41bbcccc065e775b)
+++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ExtServerForm.java (.../ExtServerForm.java) (revision 0c436f5f696e462cb9882e9e0fb1e1e76224044e)
@@ -40,6 +40,8 @@
private String lessonFinishUrl;
+ private String logoutUrl;
+
private String extGroupsUrl;
private boolean disabled = false;
@@ -137,6 +139,14 @@
this.lessonFinishUrl = lessonFinishUrl;
}
+ public String getLogoutUrl() {
+ return logoutUrl;
+ }
+
+ public void setLogoutUrl(String logoutUrl) {
+ this.logoutUrl = logoutUrl;
+ }
+
public String getExtGroupsUrl() {
return extGroupsUrl;
}
Index: lams_admin/web/servermaintain.jsp
===================================================================
diff -u -r37bb2ae017713b44cdfd6a55cfceca28c3efab02 -r0c436f5f696e462cb9882e9e0fb1e1e76224044e
--- lams_admin/web/servermaintain.jsp (.../servermaintain.jsp) (revision 37bb2ae017713b44cdfd6a55cfceca28c3efab02)
+++ lams_admin/web/servermaintain.jsp (.../servermaintain.jsp) (revision 0c436f5f696e462cb9882e9e0fb1e1e76224044e)
@@ -119,6 +119,10 @@
+
+
+
+
Index: lams_central/src/java/org/lamsfoundation/lams/web/HomeController.java
===================================================================
diff -u -r587ed647f8d1a0410710ce167369607c1eb57c45 -r0c436f5f696e462cb9882e9e0fb1e1e76224044e
--- lams_central/src/java/org/lamsfoundation/lams/web/HomeController.java (.../HomeController.java) (revision 587ed647f8d1a0410710ce167369607c1eb57c45)
+++ lams_central/src/java/org/lamsfoundation/lams/web/HomeController.java (.../HomeController.java) (revision 0c436f5f696e462cb9882e9e0fb1e1e76224044e)
@@ -38,6 +38,7 @@
import javax.servlet.http.HttpSession;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.lamsfoundation.lams.contentrepository.exception.RepositoryCheckedException;
import org.lamsfoundation.lams.learningdesign.GroupUser;
@@ -353,10 +354,10 @@
}
@RequestMapping("/logout")
- public String logout(HttpServletRequest req) throws IOException, ServletException {
-
- req.getSession().invalidate();
- return "redirect:/index.do";
+ public String logout(HttpSession session) throws IOException, ServletException {
+ String logoutURL = (String) session.getAttribute("integratedLogoutURL");
+ session.invalidate();
+ return "redirect:" + (StringUtils.isBlank(logoutURL) ? "/index.do" : logoutURL);
}
private String displayMessage(HttpServletRequest req, String messageKey) {
Index: lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestServlet.java
===================================================================
diff -u -r33829c670fd8c90447d62ea3300498a103905e7a -r0c436f5f696e462cb9882e9e0fb1e1e76224044e
--- lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestServlet.java (.../LoginRequestServlet.java) (revision 33829c670fd8c90447d62ea3300498a103905e7a)
+++ lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestServlet.java (.../LoginRequestServlet.java) (revision 0c436f5f696e462cb9882e9e0fb1e1e76224044e)
@@ -184,6 +184,9 @@
hses.setAttribute("login", login);
String token = "#LAMS" + RandomPasswordGenerator.nextPassword(10);
hses.setAttribute("password", token);
+ // if there is logout URL at the integrated server, put it into session right now
+ // if authentication fails, it will be cleared
+ hses.setAttribute("integratedLogoutURL", extServer.getLogoutUrl());
// notify the login module that the user has been authenticated correctly
UniversalLoginModule.setAuthenticationToken(token);
Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190415.sql
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190415.sql (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20190415.sql (revision 0c436f5f696e462cb9882e9e0fb1e1e76224044e)
@@ -0,0 +1,16 @@
+-- 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-------------------------
+
+-- SP-2 Add logout URL to integrated servers
+
+ALTER TABLE lams_ext_server_org_map
+ADD COLUMN logout_url TEXT AFTER lesson_finish_url;
+
+----------------------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 -r5b1fbc89c883857eace8c043a594a79cb0f60bc4 -r0c436f5f696e462cb9882e9e0fb1e1e76224044e
--- lams_common/src/java/org/lamsfoundation/lams/integration/ExtServer.java (.../ExtServer.java) (revision 5b1fbc89c883857eace8c043a594a79cb0f60bc4)
+++ lams_common/src/java/org/lamsfoundation/lams/integration/ExtServer.java (.../ExtServer.java) (revision 0c436f5f696e462cb9882e9e0fb1e1e76224044e)
@@ -17,7 +17,7 @@
@Entity
@Table(name = "lams_ext_server_org_map")
public class ExtServer implements Serializable, Comparable {
-
+
private static final long serialVersionUID = 337894825609071182L;
/*
@@ -57,6 +57,9 @@
@Column(name = "lesson_finish_url")
private String lessonFinishUrl;
+ @Column(name = "logout_url")
+ private String logoutUrl;
+
@Column(name = "ext_groups_url")
private String extGroupsUrl;
@@ -102,10 +105,10 @@
private Boolean gradebookOnComplete;
@OneToMany(mappedBy = "extServer")
- private Set extCourseClassMaps = new HashSet();
+ private Set extCourseClassMaps = new HashSet<>();
@OneToMany(mappedBy = "extServer")
- private Set extUserUseridMaps = new HashSet();
+ private Set extUserUseridMaps = new HashSet<>();
/**
* Comma-separated list of roles that LTI tool consumer uses to indicate user monitor role
@@ -189,6 +192,14 @@
this.lessonFinishUrl = lessonFinishUrl;
}
+ public String getLogoutUrl() {
+ return logoutUrl;
+ }
+
+ public void setLogoutUrl(String logoutUrl) {
+ this.logoutUrl = logoutUrl;
+ }
+
public String getExtGroupsUrl() {
return this.extGroupsUrl;
}
Index: lams_common/src/java/org/lamsfoundation/lams/integration/security/SsoHandler.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r0c436f5f696e462cb9882e9e0fb1e1e76224044e
--- lams_common/src/java/org/lamsfoundation/lams/integration/security/SsoHandler.java (.../SsoHandler.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_common/src/java/org/lamsfoundation/lams/integration/security/SsoHandler.java (.../SsoHandler.java) (revision 0c436f5f696e462cb9882e9e0fb1e1e76224044e)
@@ -190,6 +190,9 @@
}
} else {
+ // clear after failed authentication, if it was set in LoginRequestServlet
+ session.removeAttribute("integratedLogoutURL");
+
Integer failedAttempts = user.getFailedAttempts();
if (failedAttempts == null) {
failedAttempts = 1;