|
|
@@ -15,63 +15,64 @@ export const DURATION = 60 * 60 * 24;
|
|
|
const IS_LOCAL_ENABLE = process.env.REACT_APP_ENABLE_LOCAL_TOKEN === "true";
|
|
|
|
|
|
export const get = (): string | null => {
|
|
|
- const token = sessionStorage.getItem(KEY);
|
|
|
- if (token) {
|
|
|
- return token;
|
|
|
- }
|
|
|
- if (IS_LOCAL_ENABLE) {
|
|
|
- return localStorage.getItem(KEY);
|
|
|
- }
|
|
|
- return null;
|
|
|
+ const token = sessionStorage.getItem(KEY);
|
|
|
+ if (token) {
|
|
|
+ return token;
|
|
|
+ }
|
|
|
+ if (IS_LOCAL_ENABLE) {
|
|
|
+ return localStorage.getItem(KEY);
|
|
|
+ }
|
|
|
+ return null;
|
|
|
};
|
|
|
|
|
|
const set = (token: string) => {
|
|
|
- sessionStorage.setItem(KEY, token);
|
|
|
- if (IS_LOCAL_ENABLE) {
|
|
|
- localStorage.setItem(KEY, token);
|
|
|
- }
|
|
|
+ sessionStorage.setItem(KEY, token);
|
|
|
+ if (IS_LOCAL_ENABLE) {
|
|
|
+ localStorage.setItem(KEY, token);
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
const remove = () => {
|
|
|
- sessionStorage.removeItem(KEY);
|
|
|
- localStorage.removeItem(KEY);
|
|
|
+ sessionStorage.removeItem(KEY);
|
|
|
+ localStorage.removeItem(KEY);
|
|
|
};
|
|
|
|
|
|
export interface IUser {
|
|
|
- nickName: string;
|
|
|
- realName: string;
|
|
|
- avatar: string;
|
|
|
- roles: string[];
|
|
|
+ id: string;
|
|
|
+ nickName: string;
|
|
|
+ realName: string;
|
|
|
+ avatar: string;
|
|
|
+ roles: string[];
|
|
|
}
|
|
|
|
|
|
interface IState {
|
|
|
- payload?: IUser;
|
|
|
+ payload?: IUser;
|
|
|
}
|
|
|
|
|
|
const initialState: IState = {};
|
|
|
|
|
|
export const slice = createSlice({
|
|
|
- name: "current-user",
|
|
|
- initialState,
|
|
|
- reducers: {
|
|
|
- signIn: (state, action: PayloadAction<[IUser, string]>) => {
|
|
|
- state.payload = action.payload[0];
|
|
|
- set(action.payload[1]);
|
|
|
- },
|
|
|
- signOut: (state) => {
|
|
|
- state.payload = undefined;
|
|
|
- remove();
|
|
|
- },
|
|
|
- },
|
|
|
+ name: "current-user",
|
|
|
+ initialState,
|
|
|
+ reducers: {
|
|
|
+ signIn: (state, action: PayloadAction<[IUser, string]>) => {
|
|
|
+ state.payload = action.payload[0];
|
|
|
+ set(action.payload[1]);
|
|
|
+ },
|
|
|
+ signOut: (state) => {
|
|
|
+ state.payload = undefined;
|
|
|
+ remove();
|
|
|
+ },
|
|
|
+ },
|
|
|
});
|
|
|
|
|
|
export const { signIn, signOut } = slice.actions;
|
|
|
|
|
|
export const isRoot = (state: RootState): boolean =>
|
|
|
- state.currentUser.payload?.roles.includes(ROLE_ROOT) || false;
|
|
|
+ state.currentUser.payload?.roles.includes(ROLE_ROOT) || false;
|
|
|
export const isAdministrator = (state: RootState): boolean =>
|
|
|
- state.currentUser.payload?.roles.includes(ROLE_ADMINISTRATOR) || false;
|
|
|
+ state.currentUser.payload?.roles.includes(ROLE_ADMINISTRATOR) || false;
|
|
|
export const currentUser = (state: RootState): IUser | undefined =>
|
|
|
- state.currentUser.payload;
|
|
|
+ state.currentUser.payload;
|
|
|
|
|
|
export default slice.reducer;
|