All files / lib/auth session.js

100% Statements 17/17
84.62% Branches 11/13
100% Functions 4/4
100% Lines 17/17
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 403x     2x       3x 3x 2x 2x 2x   2x 2x       1x         3x 3x       3x 3x 1x   3x       3x      
const utils = require('../utils')
 
function trim (str) {
  return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '')
}
 
function getCookie (cookieName, cookieString) {
  cookieString = cookieString || window.document.cookie
  if (cookieString && cookieString !== '') {
    const cookies = cookieString.split(';')
    for (var i = 0; i < cookies.length; i++) {
      const cookie = trim(cookies[i])
      // Does this cookie string begin with the name we want?
      Eif (cookie.substring(0, cookieName.length + 1) === (cookieName + '=')) {
        return decodeURIComponent(cookie.substring(cookieName.length + 1))
      }
    }
  }
  return null
}
 
class SessionAuthentication {
  constructor (options = {}) {
    this.csrfToken = getCookie(options.csrfCookieName, options.cookieString)
    this.csrfHeaderName = options.csrfHeaderName
  }
 
  authenticate (options) {
    options.credentials = 'same-origin'
    if (this.csrfToken && !utils.csrfSafeMethod(options.method)) {
      options.headers[this.csrfHeaderName] = this.csrfToken
    }
    return options
  }
}
 
module.exports = {
  SessionAuthentication: SessionAuthentication
}