Files
juwan-frontend/store/auth.ts
T

40 lines
944 B
TypeScript

import { create } from "zustand"
import type { User, UserRole } from "@/lib/types"
interface AuthState {
isAuthenticated: boolean
currentRole: UserRole
verifiedRoles: UserRole[]
user: User | null
switchRole: (role: UserRole) => void
login: (user: User, verifiedRoles?: UserRole[]) => void
logout: () => void
}
export const useAuthStore = create<AuthState>((set, get) => ({
isAuthenticated: false,
currentRole: "consumer",
verifiedRoles: ["consumer"],
user: null,
switchRole: (role) => {
const { verifiedRoles } = get()
if (verifiedRoles.includes(role)) {
set({ currentRole: role })
}
},
login: (user, verifiedRoles = ["consumer"]) =>
set({
isAuthenticated: true,
user,
currentRole: user.role,
verifiedRoles,
}),
logout: () =>
set({
isAuthenticated: false,
currentRole: "consumer",
verifiedRoles: ["consumer"],
user: null,
}),
}))