All files / src/containers/Impersonate actions.js

0% Statements 0/32
0% Branches 0/4
0% Functions 0/11
0% Lines 0/5
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 78 79 80                                                                                                                                                               
import { fetch } from 'domain/Api';
import { createUserManager } from 'data/SingleSignOn';
import Config from 'domain/Config';
import ApiCall from 'containers/ApiCalls';
import QueryString from 'query-string';
 
export const POST_IMPERSONATE_REQUEST = 'POST_IMPERSONATE_REQUEST';
export const POST_IMPERSONATE_SUCCESS = 'POST_IMPERSONATE_SUCCESS';
export const POST_IMPERSONATE_FAILURE = 'POST_IMPERSONATE_FAILURE';
export const CLEAR_IMPERSONATE_DATA = 'CLEAR_IMPERSONATE_DATA';
 
export function postImpersonate(email, token) {
  return (dispatch) => {
    const url = getTokenEndPoint();
    const method = 'POST';
 
    dispatch(postImpersonateRequest()).payload
      .then((response) => dispatch(postImpersonateSuccess(response)))
      .catch((error) => dispatch(postImpersonateFailure(error)));
 
    function postImpersonateRequest() {
      const body = QueryString.stringify({
        grant_type: 'impersonation',
        scope: _getSingleSingOnScope(),
        token,
        impersonated_user_email: email,
      });
 
      const param = {
        method,
        headers: {
          'Content-Type': 'charset=utf-8',
          Accept: '',
          Authorization: Config.get('impersonateClientAuthorization'),
        },
        body,
      };
      return ApiCall.createAction({
        type: POST_IMPERSONATE_REQUEST,
        payload: fetch(url, param),
        url,
        method,
      });
    }
 
    function postImpersonateSuccess(response) {
      return ApiCall.createAction({
        type: POST_IMPERSONATE_SUCCESS,
        payload: response,
        url,
        method,
      });
    }
 
    function postImpersonateFailure(error) {
      return ApiCall.createAction({
        type: POST_IMPERSONATE_FAILURE,
        error,
        url,
        method,
        disableDefault: true,
      });
    }
  };
 
  function _getSingleSingOnScope() {
    return createUserManager().settings._scope;
  }
}
 
export function getTokenEndPoint() {
  return createUserManager().settings._metadata.token_endpoint;
}
 
export function clearImpersonateData() {
  return {
    type: CLEAR_IMPERSONATE_DATA,
  };
}