authSlice.ts 997 Bytes
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