UNPKG

cspace-ui

Version:
111 lines (93 loc) 2.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.login = exports.resetLogin = void 0; var _get = _interopRequireDefault(require("lodash/get")); var _authority = require("./authority"); var _cspace = require("./cspace"); var _prefs = require("./prefs"); var _reducers = require("../reducers"); var _errorCodes = require("../constants/errorCodes"); var _actionCodes = require("../constants/actionCodes"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const resetLogin = username => ({ type: _actionCodes.RESET_LOGIN, meta: { username } }); exports.resetLogin = resetLogin; const renewAuth = (config, username, password) => dispatch => { const session = (0, _cspace.createSession)(username, password); return session.login().then(() => session.read('accounts/0/accountperms')).then(response => { if ((0, _get.default)(response, ['data', 'ns2:account_permission', 'account', 'tenantId']) !== config.tenantId) { // The logged in user doesn't belong to the tenant that this UI expects. return session.logout() // TODO: Use .finally when it's supported in all browsers. .then(() => Promise.reject({ code: _errorCodes.ERR_WRONG_TENANT })).catch(() => Promise.reject({ code: _errorCodes.ERR_WRONG_TENANT })); } dispatch((0, _cspace.setSession)(session)); return dispatch({ type: _actionCodes.AUTH_RENEW_FULFILLED, payload: response, meta: { config, username } }); }).catch(error => { let { code } = error; if (!code) { const desc = (0, _get.default)(error, ['response', 'data', 'error_description']) || (0, _get.default)(error, 'message'); if (desc === 'Bad credentials') { code = _errorCodes.ERR_INVALID_CREDENTIALS; } else if (desc === 'Network Error') { code = _errorCodes.ERR_NETWORK; } } dispatch({ type: _actionCodes.AUTH_RENEW_REJECTED, payload: { code, error }, meta: { username } }); return Promise.reject({ code, error }); }); }; const login = (config, username, password) => (dispatch, getState) => { const prevUsername = (0, _reducers.getUserUsername)(getState()); dispatch((0, _prefs.savePrefs)()); dispatch({ type: _actionCodes.LOGIN_STARTED, meta: { username } }); return dispatch(renewAuth(config, username, password)).then(() => dispatch((0, _prefs.loadPrefs)(config, username))).then(() => dispatch((0, _authority.readAuthVocabs)(config))).then(() => dispatch({ type: _actionCodes.LOGIN_FULFILLED, meta: { prevUsername, username } })).catch(error => dispatch({ type: _actionCodes.LOGIN_REJECTED, payload: error, meta: { username } })); }; exports.login = login;