UNPKG

@twreporter/universal-header

Version:
98 lines (95 loc) 2.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = auth; var _actionTypes = _interopRequireDefault(require("../constants/action-types")); var _jwt = _interopRequireDefault(require("../utils/jwt")); var _get = _interopRequireDefault(require("lodash/get")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } // lodash var _ = { get: _get["default"] }; var initState = { accessToken: '', actionType: '', lastAction: null, isAuthed: false, isRequesting: false, userInfo: null }; /** * @param {Object} state - redux state * @param {bool} state.isRequesting - requst is in progress * @param {bool} state.isAuthed - indicates if authorization succeeds * @param {Object} state.lastAction - last redux action for debugging * @param {string} state.lastAction.actionType * @param {Object} state.lastAction.actionPayload * @param {Object} state.userInfo - user information * @param {number} state.userInfo.user_id - id of user * @param {string} state.userInfo.jwt - access_token granted for the user * @param {string} state.userInfo.email - email of the user * @param {Object} action - redux action * @param {string} action.type * @param {Object} action.payload - response of API server * @param {string} action.payload.url - request endpoint * @param {Object} action.payload.options - request options * @param {string} action.payload.message - error message */ function auth() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initState; var action = arguments.length > 1 ? arguments[1] : undefined; switch (action.type) { case _actionTypes["default"].AUTH_CLEAR: { // return empty state return initState; } case _actionTypes["default"].REQUEST_AUTH: { return { accessToken: initState.accessToken, lastAction: { type: action.type, payload: action.payload }, isAuthed: false, isRequesting: true, userInfo: initState.userInfo }; } case _actionTypes["default"].AUTH_FAILURE: { return { accessToken: initState.accessToken, lastAction: { type: action.type, payload: action.payload }, isAuthed: false, isRequesting: false, userInfo: initState.userInfo }; } case _actionTypes["default"].AUTH_SUCCESS: { var jwt = _.get(action, 'payload.data.jwt', ''); var userInfo = _jwt["default"].decodePayload(jwt); return { accessToken: jwt, lastAction: { type: action.type, payload: action.payload }, isAuthed: true, isRequesting: false, userInfo: userInfo }; } default: { return state; } } }