add response interceptors for refreshTokens method
This commit is contained in:
committed by
Daniel Hutzel
parent
76cbf7f9ca
commit
938abb6387
5
media-store/app/src/util/EventEmitter.js
Normal file
5
media-store/app/src/util/EventEmitter.js
Normal file
@@ -0,0 +1,5 @@
|
||||
import EventEmitter from "events";
|
||||
|
||||
const emitter = new EventEmitter();
|
||||
|
||||
export { emitter };
|
||||
8
media-store/app/src/util/constants.js
Normal file
8
media-store/app/src/util/constants.js
Normal file
@@ -0,0 +1,8 @@
|
||||
export const AVAILABLE_LOCALES = ["en", "fr", "de"];
|
||||
|
||||
export const MESSAGE_TIMEOUT = 2;
|
||||
|
||||
// in dev mode using provided api
|
||||
// in prod mode using proxy
|
||||
export const API =
|
||||
process.env.NODE_ENV === "development" ? "http://localhost:4004/" : "api/";
|
||||
35
media-store/app/src/util/localStorageService.js
Normal file
35
media-store/app/src/util/localStorageService.js
Normal file
@@ -0,0 +1,35 @@
|
||||
import { isValidUser } from "./validateUser";
|
||||
import { AVAILABLE_LOCALES } from "./constants";
|
||||
|
||||
const setUserToLS = (user) => {
|
||||
if (user) {
|
||||
localStorage.setItem("user", JSON.stringify(user));
|
||||
} else {
|
||||
localStorage.removeItem("user");
|
||||
}
|
||||
};
|
||||
|
||||
const getUserFromLS = () => {
|
||||
let userFromLS;
|
||||
try {
|
||||
userFromLS = JSON.parse(localStorage.getItem("user"));
|
||||
if (isValidUser(userFromLS)) {
|
||||
return userFromLS;
|
||||
}
|
||||
} catch (e) {}
|
||||
};
|
||||
|
||||
const getLocaleFromLS = () => {
|
||||
const localeFromLS = localStorage.getItem("locale");
|
||||
return localeFromLS &&
|
||||
localeFromLS !== "undefined" &&
|
||||
AVAILABLE_LOCALES.includes(localeFromLS)
|
||||
? localeFromLS
|
||||
: "en";
|
||||
};
|
||||
|
||||
const setLocaleToLS = (locale) => {
|
||||
localStorage.setItem("locale", locale);
|
||||
};
|
||||
|
||||
export { setLocaleToLS, getLocaleFromLS, getUserFromLS, setUserToLS };
|
||||
20
media-store/app/src/util/validateUser.js
Normal file
20
media-store/app/src/util/validateUser.js
Normal file
@@ -0,0 +1,20 @@
|
||||
import { isArray, isEmpty, isString, isNumber } from "lodash";
|
||||
|
||||
const CUSTOMER_ROLE = "customer";
|
||||
const EMPLOYEE_ROLE = "employee";
|
||||
|
||||
const isValidUser = (user) => {
|
||||
return (
|
||||
!isEmpty(user) &&
|
||||
isNumber(user.ID) &&
|
||||
isArray(user.roles) &&
|
||||
!!user.roles.some(
|
||||
(role) => role === CUSTOMER_ROLE || role === EMPLOYEE_ROLE
|
||||
) &&
|
||||
isString(user.email) &&
|
||||
isString(user.accessToken) &&
|
||||
isString(user.refreshToken)
|
||||
);
|
||||
};
|
||||
|
||||
export { isValidUser };
|
||||
Reference in New Issue
Block a user