all files / express-stormpath/lib/helpers/ create-session.js

100% Statements 13/13
62.5% Branches 5/8
100% Functions 2/2
100% Lines 13/13
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                        38× 38×   38× 38× 38×   76×                 38× 38×     38× 38×      
'use strict';
 
var Cookies = require('cookies');
 
/**
 * Creates a JWT, stores it in a cookie, and provides it on the request object
 * for other middleware to use.
 *
 * @param  {Object} authenticationResult From an authenticator in the Node SDK.
 * @param  {Object} account              Expanded Account object.
 * @param  {Object} req                  Express HTTP request.
 * @param  {Object} res                  Express HTTP response.
 */
module.exports = function (authenticationResult, account, req, res) {
  res.locals.user = account;
  req.user = account;
 
  var cookies = new Cookies(req, res);
  var isSecureRequest = req.protocol === 'https';
  var stormpathConfig = req.app.get('stormpathConfig');
 
  function setTokenCookie(token, cookieConfig) {
    cookies.set(cookieConfig.name, token, {
      domain: cookieConfig.domain,
      expires: new Date(token.body.exp * 1000),
      httpOnly: cookieConfig.httpOnly,
      path: cookieConfig.path || '/',
      secure: cookieConfig.secure === null ? isSecureRequest : cookieConfig.secure
    });
  }
 
  Eif (authenticationResult.accessToken) {
    setTokenCookie(authenticationResult.accessToken, stormpathConfig.web.accessTokenCookie);
  }
 
  Eif (authenticationResult.refreshToken) {
    setTokenCookie(authenticationResult.refreshToken, stormpathConfig.web.refreshTokenCookie);
  }
};