authSlice.ts
997 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
export interface UserInfoVO {
userId: string
username: string
userType: string
language: string
brandId: string
}
interface AuthState {
accessToken: string | null
refreshToken: string | null
userInfo: UserInfoVO | null
}
const initialState: AuthState = {
accessToken: null,
refreshToken: null,
userInfo: null
}
const authSlice = createSlice({
name: 'auth',
initialState,
reducers: {
setCredentials(state, action: PayloadAction<{ accessToken: string; refreshToken: string; userInfo: UserInfoVO }>) {
state.accessToken = action.payload.accessToken
state.refreshToken = action.payload.refreshToken
state.userInfo = action.payload.userInfo
},
clearCredentials(state) {
state.accessToken = null
state.refreshToken = null
state.userInfo = null
}
}
})
export const { setCredentials, clearCredentials } = authSlice.actions
export default authSlice.reducer