UNPKG

@warp-works/warpjs-session-plugin

Version:
42 lines (35 loc) 1.38 kB
const searchEngines = require('@quoin/search-engines'); const constants = require('./../constants'); const cookies = require('./../../lib/cookies'); const casSSO = require('./cas-sso'); const debug = require('./debug.js')('warpjs-user'); module.exports = async (config, warpCore, Persistence, req, res, next) => { // debug(`url=${req.originalUrl}: start`); const isCasSSO = casSSO.isCasSSO(config); // debug(`isCasSSO=${isCasSSO}`); if (isCasSSO && casSSO.isValidKey(config, req)) { // If the system has a key and is valid, then just by pass the user SSO // check. next(); } else if (isCasSSO && req.query.returnSSO) { await casSSO.returnSSO(config, warpCore, Persistence, req, res); } else { const data = cookies.get(config, req, res); if (data.error) { // TODO: Log this error debug(`got data.error:`, data.error); req[constants.WARPJS_USER_INVALID_REQ_KEY] = 'Invalid token'; } else { req[constants.WARPJS_USER_REQ_KEY] = data.user; } if (isCasSSO && !data.casSSO) { if (searchEngines.match(req.connection.remoteAddress, req.get('User-Agent'))) { next(); } else { casSSO.checkSSO(config, req, res); } } else { next(); } } };