Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 1x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 1x | 'use strict'
const DEFAULT_POST_LOGOUT_URL = '/goodbye'
class LogoutRequest {
/**
* @constructor
* @param options
* @param options.request {IncomingRequest} req
* @param options.response {ServerResponse} res
* @param [options.returnToUrl] {string} Post-logout url to redirect to
*/
constructor (options) {
this.request = options.request
this.response = options.response
this.returnToUrl = options.returnToUrl || DEFAULT_POST_LOGOUT_URL
}
static handle (req, res) {
return Promise.resolve()
.then(() => {
const request = LogoutRequest.fromParams(req, res)
return LogoutRequest.logout(request)
})
}
static fromParams (req, res) {
const options = {
request: req,
response: res,
returnToUrl: LogoutRequest.parseReturnUrl(req)
}
return new LogoutRequest(options)
}
static parseReturnUrl (req) {
const query = req.query || {}
return query.post_logout_redirect_uri ? query.post_logout_redirect_uri : query.returnToUrl
}
static logout (request) {
request.clearUserSession()
request.redirectToGoodbye()
}
clearUserSession () {
const session = this.request.session
session.accessToken = ''
session.refreshToken = ''
session.userId = ''
session.subject = ''
}
redirectToGoodbye () {
this.response.redirect(this.returnToUrl)
}
}
module.exports = LogoutRequest
|