Add config.expireInactiveSession to add support for non-expiring inactive sessions (#1536)

* Create non-expiring session when sessionLength is zero

* Introduce expireInactiveSessions setting
This commit is contained in:
Steven Shipton
2016-05-06 20:50:45 +01:00
committed by Drew
parent b00572de65
commit 37c502bed0
4 changed files with 66 additions and 8 deletions

View File

@@ -48,6 +48,7 @@ export class Config {
this.mount = removeTrailingSlash(mount);
this.liveQueryController = cacheInfo.liveQueryController;
this.sessionLength = cacheInfo.sessionLength;
this.expireInactiveSessions = cacheInfo.expireInactiveSessions;
this.generateSessionExpiresAt = this.generateSessionExpiresAt.bind(this);
this.revokeSessionOnPasswordReset = cacheInfo.revokeSessionOnPasswordReset;
}
@@ -69,7 +70,7 @@ export class Config {
}
}
this.validateSessionLength(options.sessionLength);
this.validateSessionConfiguration(options.sessionLength, options.expireInactiveSessions);
}
static validateEmailConfiguration({verifyUserEmails, appName, publicServerURL}) {
@@ -95,16 +96,21 @@ export class Config {
this._mount = newValue;
}
static validateSessionLength(sessionLength) {
if(isNaN(sessionLength)) {
throw 'Session length must be a valid number.';
}
else if(sessionLength <= 0) {
throw 'Session length must be a value greater than 0.'
static validateSessionConfiguration(sessionLength, expireInactiveSessions) {
if (expireInactiveSessions) {
if (isNaN(sessionLength)) {
throw 'Session length must be a valid number.';
}
else if (sessionLength <= 0) {
throw 'Session length must be a value greater than 0.'
}
}
}
generateSessionExpiresAt() {
if (!this.expireInactiveSessions) {
return undefined;
}
var now = new Date();
return new Date(now.getTime() + (this.sessionLength*1000));
}
@@ -132,7 +138,7 @@ export class Config {
get verifyEmailURL() {
return `${this.publicServerURL}/apps/${this.applicationId}/verify_email`;
}
};
}
export default Config;
module.exports = Config;

View File

@@ -114,6 +114,7 @@ class ParseServer {
},
liveQuery = {},
sessionLength = 31536000, // 1 Year in seconds
expireInactiveSessions = true,
verbose = false,
revokeSessionOnPasswordReset = true,
}) {
@@ -188,6 +189,7 @@ class ParseServer {
maxUploadSize: maxUploadSize,
liveQueryController: liveQueryController,
sessionLength: Number(sessionLength),
expireInactiveSessions: expireInactiveSessions,
revokeSessionOnPasswordReset
});