feat(project): init
This commit is contained in:
85
app/store/user.ts
Normal file
85
app/store/user.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
import { create } from "zustand"
|
||||
import { persist } from "zustand/middleware"
|
||||
|
||||
interface RbacDataItem {
|
||||
app: string
|
||||
cat: string
|
||||
platform: string
|
||||
tenant: string
|
||||
permission: {
|
||||
[x: string]: {
|
||||
[y: string]: [boolean, any, string]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface UserState {
|
||||
tenant: string
|
||||
user_info: {
|
||||
[x: string]: string
|
||||
}
|
||||
rbac: {
|
||||
data: RbacDataItem[]
|
||||
}
|
||||
needResetPassword: boolean
|
||||
access_token: string
|
||||
refresh_token: string
|
||||
setUserInfo: (
|
||||
tenant: string,
|
||||
user_info: {
|
||||
[x: string]: string
|
||||
},
|
||||
rbac: {
|
||||
data: RbacDataItem[]
|
||||
}
|
||||
) => void
|
||||
removeUserInfo: () => void
|
||||
refreshToken: (params: {
|
||||
access_token: string
|
||||
refresh_token: string
|
||||
}) => void
|
||||
setNeedResetPassword: (needResetPassword: boolean) => void
|
||||
}
|
||||
|
||||
const initialUserState = {
|
||||
tenant: "",
|
||||
user_info: {},
|
||||
rbac: {
|
||||
data: [],
|
||||
},
|
||||
needResetPassword: false,
|
||||
access_token: "",
|
||||
refresh_token: "",
|
||||
}
|
||||
|
||||
export const useUserStore = create(
|
||||
persist<UserState>(
|
||||
(set) => ({
|
||||
tenant: initialUserState.tenant,
|
||||
user_info: initialUserState.user_info,
|
||||
rbac: initialUserState.rbac,
|
||||
needResetPassword: initialUserState.needResetPassword,
|
||||
access_token: initialUserState.access_token,
|
||||
refresh_token: initialUserState.refresh_token,
|
||||
setUserInfo: (tenant, user_info, rbac) =>
|
||||
set((state) => {
|
||||
return { ...state, tenant: tenant, user_info: user_info, rbac: rbac }
|
||||
}),
|
||||
removeUserInfo: () =>
|
||||
set((state) => {
|
||||
return { ...state, ...initialUserState }
|
||||
}),
|
||||
setNeedResetPassword: (needResetPassword) =>
|
||||
set((state) => {
|
||||
return { ...state, needResetPassword: needResetPassword }
|
||||
}),
|
||||
refreshToken: ({ access_token, refresh_token }) =>
|
||||
set((state) => {
|
||||
return { ...state, access_token, refresh_token }
|
||||
}),
|
||||
}),
|
||||
{
|
||||
name: "user-store",
|
||||
}
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user