46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import { useState, useEffect } from 'react'
|
||
|
||
export interface AuthState {
|
||
isAuthenticated: boolean
|
||
isLoading: boolean
|
||
user: any | null
|
||
}
|
||
|
||
export function useAuth(): AuthState {
|
||
const [state, setState] = useState<AuthState>({
|
||
isAuthenticated: false,
|
||
isLoading: true,
|
||
user: null
|
||
})
|
||
|
||
useEffect(() => {
|
||
const checkAuth = async () => {
|
||
try {
|
||
// 检查本地存储的token
|
||
const token = localStorage.getItem('token')
|
||
if (!token) {
|
||
setState({ isAuthenticated: false, isLoading: false, user: null })
|
||
return
|
||
}
|
||
|
||
// TODO: 这里可以添加token验证的API调用
|
||
// const response = await validateToken(token)
|
||
// if (response.valid) {
|
||
// setState({ isAuthenticated: true, isLoading: false, user: response.user })
|
||
// } else {
|
||
// setState({ isAuthenticated: false, isLoading: false, user: null })
|
||
// }
|
||
|
||
// 临时:仅检查token存在性
|
||
setState({ isAuthenticated: true, isLoading: false, user: { token } })
|
||
} catch (error) {
|
||
console.error('Auth check failed:', error)
|
||
setState({ isAuthenticated: false, isLoading: false, user: null })
|
||
}
|
||
}
|
||
|
||
checkAuth()
|
||
}, [])
|
||
|
||
return state
|
||
}
|