44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
|
import { createSlice } from "@reduxjs/toolkit";
|
||
|
import { login } from "./authThunk";
|
||
|
|
||
|
const authSlice = createSlice({
|
||
|
name: "authSlice",
|
||
|
initialState: {
|
||
|
userId: null,
|
||
|
name: null,
|
||
|
roles: [],
|
||
|
token: null,
|
||
|
},
|
||
|
reducers: {
|
||
|
logout(state) {
|
||
|
state.userId = null;
|
||
|
state.name = null;
|
||
|
state.token = null;
|
||
|
state.roles = [];
|
||
|
|
||
|
localStorage.removeItem("userId");
|
||
|
localStorage.removeItem("name");
|
||
|
localStorage.removeItem("roles");
|
||
|
localStorage.removeItem("token");
|
||
|
},
|
||
|
},
|
||
|
extraReducers: (builder) => {
|
||
|
builder.addCase(login.fulfilled, (state, action) => {
|
||
|
const payload = action.payload;
|
||
|
state.userId = payload.userId;
|
||
|
state.name = payload.name;
|
||
|
state.roles = payload.roles;
|
||
|
state.token = payload.token;
|
||
|
|
||
|
localStorage.setItem("userId", payload.userId);
|
||
|
localStorage.setItem("name", payload.name);
|
||
|
localStorage.setItem("roles", JSON.stringify(payload.roles));
|
||
|
localStorage.setItem("token", action.payload.token);
|
||
|
});
|
||
|
},
|
||
|
});
|
||
|
|
||
|
export const { logout } = authSlice.actions;
|
||
|
export const selectUserRole = (state) => state.auth.roles;
|
||
|
export default authSlice.reducer;
|