You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

authenticationMiddleware.js 939B

123456789101112131415161718192021222324252627282930
  1. import i18next from "i18next";
  2. import { attachPostRequestListener } from "../../request";
  3. import { logoutUser } from "../actions/login/loginActions";
  4. import { makeErrorToastMessage } from "../utils/makeToastMessage";
  5. //Interceptor unique name
  6. export const authenticationMiddlewareInterceptorName =
  7. "AUTHENTICATION_MIDDLEWARE";
  8. export default ({ dispatch }) =>
  9. (next) =>
  10. (action) => {
  11. attachPostRequestListener((error) => {
  12. if (!error.response) {
  13. makeErrorToastMessage(i18next.t("apiErrors.somethingWentWrong"));
  14. return Promise.reject(error);
  15. }
  16. if (error.response.status === 400) {
  17. return Promise.reject(error);
  18. }
  19. if (error.response.status === 401) {
  20. dispatch(logoutUser());
  21. return Promise.reject(error);
  22. }
  23. return Promise.resolve();
  24. // return Promise.resolve(error);
  25. }, authenticationMiddlewareInterceptorName);
  26. next(action);
  27. };