34 lines
886 B
TypeScript
34 lines
886 B
TypeScript
import {createSlice, PayloadAction} from "@reduxjs/toolkit";
|
|
|
|
interface AuthState {
|
|
isAuthorized: boolean;
|
|
accessToken: string;
|
|
}
|
|
|
|
const initialState = (): AuthState => {
|
|
const localStorageState = localStorage.getItem("authState");
|
|
if (localStorageState !== null) {
|
|
return JSON.parse(localStorageState);
|
|
}
|
|
return {
|
|
accessToken: "",
|
|
isAuthorized: false
|
|
}
|
|
}
|
|
|
|
const authSlice = createSlice({
|
|
name: 'auth',
|
|
initialState,
|
|
reducers: {
|
|
login: (state, action: PayloadAction<{ accessToken: string }>) => {
|
|
state.accessToken = action.payload.accessToken;
|
|
state.isAuthorized = true;
|
|
},
|
|
logout: (state) => {
|
|
state.isAuthorized = false;
|
|
state.accessToken = '';
|
|
}
|
|
}
|
|
})
|
|
export const {login, logout} = authSlice.actions;
|
|
export default authSlice.reducer; |