зеркало из https://github.com/mozilla/fleet.git
42 строки
1.0 KiB
JavaScript
42 строки
1.0 KiB
JavaScript
/* eslint-disable no-unused-vars */
|
|
import { endsWith, get } from 'lodash';
|
|
import { push } from 'react-router-redux';
|
|
|
|
import APP_CONSTANTS from 'app_constants';
|
|
import kolide from 'kolide';
|
|
import { LOGIN_FAILURE, LOGIN_SUCCESS, LOGOUT_SUCCESS, logoutSuccess } from 'redux/nodes/auth/actions';
|
|
import local from 'utilities/local';
|
|
|
|
const { HTTP_STATUS, PATHS } = APP_CONSTANTS;
|
|
|
|
const authMiddleware = store => next => (action) => {
|
|
const { type, payload } = action;
|
|
|
|
if (endsWith(type, 'FAILURE')) {
|
|
if (get(payload, 'errors.http_status') === HTTP_STATUS.UNAUTHENTICATED) {
|
|
store.dispatch(logoutSuccess);
|
|
}
|
|
}
|
|
|
|
if (type === LOGIN_SUCCESS) {
|
|
const { token } = payload;
|
|
|
|
if (token) {
|
|
local.setItem('auth_token', token);
|
|
kolide.setBearerToken(token);
|
|
}
|
|
}
|
|
|
|
if (type === LOGOUT_SUCCESS || type === LOGIN_FAILURE) {
|
|
const { LOGIN } = PATHS;
|
|
|
|
local.clear();
|
|
kolide.setBearerToken(null);
|
|
store.dispatch(push(LOGIN));
|
|
}
|
|
|
|
return next(action);
|
|
};
|
|
|
|
export default authMiddleware;
|