All files / session logout.js

27.27% Statements 21/77
100% Branches 0/0
0% Functions 0/4
27.27% Lines 21/77

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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 781x 1x 1x 1x                   1x 1x 1x           1x 1x 1x                 1x 1x 1x 1x 1x 1x 1x 1x                                                                     1x 1x 1x  
import cookie from 'cookie';
import axios from 'axios';
 
export const deleteImpersonatedUser = (cookies) => {
  if (cookies.hasOwnProperty('qpp_impersonated_user')) {
    document.cookie =
      'qpp_impersonated_user=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
  }

  if (cookies.hasOwnProperty('qpp_impersonated_type')) {
    document.cookie =
      'qpp_impersonated_type=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
  }
};
 
export const revertApmPaymentCookie = () => {
  const userHasApmPayments = localStorage.getItem('user_has_apm_payments');

  if (userHasApmPayments) {
    document.cookie = `user_has_apm_payments=${userHasApmPayments}; Path=/;`;
  }
};
 
export const revertQppHasAuthsCookie = () => {
  const { qppHasAuthorizations, behindSSL } = JSON.parse(
    localStorage.getItem('impersonatorAuthValues')
  );
  if (qppHasAuthorizations) {
    document.cookie = `qpp_has_authorizations=${qppHasAuthorizations};path=/${
      behindSSL ? ';secure' : ''
    }`;
  }
};
 
/**
 * Makes an API request to end the user session.
 * @param  {Object} [_window] The DOM Window
 * @return {Function} Returns a promise
 */
const LogoutSession = (_window) => {
  // Remove the Side Nav expanded state from localStorage
  localStorage.removeItem('qpp_side_nav_expanded')

  let cookies = cookie.parse(_window.document.cookie);
  let logoutDestination = '/logout-confirmation';

  if (cookies.hasOwnProperty('qpp_auth_token')) {
    let onSuccess = () => {
      // redirect to login/logged out screen
      deleteImpersonatedUser(cookies);
      _window.location.pathname = logoutDestination;
    };

    let onError = () => {
      // delete cookie and redirect login/logged out screen
      deleteImpersonatedUser(cookies);
      _window.location.pathname = logoutDestination;
    };

    return axios({
      method: 'POST',
      url: '/user/session-logout',
      headers: {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${cookies.qpp_auth_token}`,
      },
    })
      .then(onSuccess, onError)
      .catch(function (err) {
        console.log(err);
      });
  } else {
    _window.location.pathname = logoutDestination;
  }
};
 
export default LogoutSession;