Skip to content
This repository was archived by the owner on Jun 7, 2023. It is now read-only.

Commit cc5edcb

Browse files
authored
Merge pull request #935 from RunestoneInteractive/session_holes
plug session expiration holes
2 parents 6dfe65c + 48bed53 commit cc5edcb

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

runestone/common/css/runestone-custom-sphinx-bootstrap.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,10 @@ textarea#lp-result {
869869
background: green;
870870
}
871871

872+
#subchapterprogress > div.loggedout {
873+
background: lightgray;
874+
}
875+
872876
.runestone_caption {
873877
text-align: center;
874878
}

runestone/common/js/bookfuncs.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ function addReadingList() {
9090

9191

9292
function timedRefresh() {
93-
timeoutPeriod = 4500000; // 75 minutes
93+
timeoutPeriod = 900000; // 75 minutes
9494
$(document).bind("idle.idleTimer", function () {
9595
// After timeout period send the user back to the index. This will force a login
9696
// if needed when they want to go to a particular page. This may not be perfect
@@ -109,7 +109,7 @@ class PageProgressBar {
109109
constructor(actDict) {
110110
this.possible = 0;
111111
this.total = 1;
112-
if(actDict) {
112+
if(actDict && Object.keys(actDict).length > 0) {
113113
this.activities = actDict;
114114
} else {
115115
let activities = {'page': 0};
@@ -149,6 +149,9 @@ class PageProgressBar {
149149
$( "#subchapterprogress" ).progressbar({
150150
value: value
151151
});
152+
if (! eBookConfig.isLoggedIn) {
153+
$("#subchapterprogress>div").addClass("loggedout");
154+
}
152155
}
153156

154157
updateProgress(div_id) {
@@ -185,10 +188,10 @@ function handlePageSetup() {
185188
}
186189
$(document).trigger("runestone:login")
187190
addReadingList();
188-
// timedRefresh() ??
191+
timedRefresh();
189192
} else {
190193
mess = 'Not logged in'
191-
$(document).trigger("runestone:logout")
194+
$(document).trigger("runestone:logout");
192195
}
193196
$(".loggedinuser").html(mess);
194197

runestone/common/js/runestonebase.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,16 @@ RunestoneBase.prototype.logBookEvent = function (eventInfo) {
3535
return;
3636
}
3737
eventInfo.course = eBookConfig.course;
38+
eventInfo.clientLoginStatus = eBookConfig.isLoggedIn;
3839
eventInfo.timezoneoffset = (new Date()).getTimezoneOffset()/60
3940
if (eBookConfig.useRunestoneServices && eBookConfig.logLevel > 0) {
4041
var post_return = jQuery.post(eBookConfig.ajaxURL + 'hsblog', eventInfo,
41-
null, 'json');
42+
function(jsondata) {
43+
if (jsondata.log == false) {
44+
alert(jsondata.message);
45+
location.href = eBookConfig.app + '/default/user/login?_next=' + location.pathname;
46+
}
47+
}, 'json');
4248
}
4349
console.log("logging event " + JSON.stringify(eventInfo));
4450
if (typeof pageProgressTracker.updateProgress === "function"
@@ -53,6 +59,7 @@ RunestoneBase.prototype.logRunEvent = function (eventInfo) {
5359
return;
5460
}
5561
eventInfo.course = eBookConfig.course;
62+
eventInfo.clientLoginStatus = eBookConfig.isLoggedIn;
5663
eventInfo.timezoneoffset = (new Date()).getTimezoneOffset()/60
5764
if ( this.forceSave || (! 'to_save' in eventInfo) ) {
5865
eventInfo.save_code = "True"
@@ -63,6 +70,9 @@ RunestoneBase.prototype.logRunEvent = function (eventInfo) {
6370
// data = JSON.parse(data);
6471
if (data.message) {
6572
alert(data.message);
73+
if (data.log == false) {
74+
location.href = eBookConfig.app + '/default/user/login?_next=' + location.pathname;
75+
}
6676
}
6777
this.forceSave = false;
6878
}).bind(this))

0 commit comments

Comments
 (0)