37 lines
901 B
JavaScript
37 lines
901 B
JavaScript
import { createSlice } from "@reduxjs/toolkit";
|
|
|
|
const getInitialState = () => {
|
|
if (typeof window === "undefined") {
|
|
return { token: null, isAuthenticated: false };
|
|
}
|
|
const token = localStorage.getItem("token");
|
|
return {
|
|
token: token || null,
|
|
isAuthenticated: !!token,
|
|
};
|
|
};
|
|
|
|
const authSlice = createSlice({
|
|
name: "auth",
|
|
initialState: getInitialState(),
|
|
reducers: {
|
|
setToken(state, action) {
|
|
state.token = action.payload;
|
|
state.isAuthenticated = true;
|
|
if (typeof window !== "undefined") {
|
|
localStorage.setItem("token", action.payload);
|
|
}
|
|
},
|
|
clearToken(state) {
|
|
state.token = null;
|
|
state.isAuthenticated = false;
|
|
if (typeof window !== "undefined") {
|
|
localStorage.removeItem("token");
|
|
}
|
|
},
|
|
},
|
|
});
|
|
|
|
export const { setToken, clearToken } = authSlice.actions;
|
|
export default authSlice.reducer;
|