import type { HjcUser } from '~/types/tender' /** 登录态(token 存 cookie,SSR 安全;服务器端代理从 cookie 读取并转发 Authorization) */ export function useHjcAuth() { const token = useCookie('hjc_token', { maxAge: 60 * 60 * 24 * 7, sameSite: 'lax' }) const user = useState('hjc-user', () => null) function isLoggedIn() { return !!token.value } async function login(enterpriseName: string, password: string) { try { const res: any = await $fetch('/api/tender/login', { method: 'POST', body: { enterpriseName, password } }) // mp-api 统一返回 ApiResult{code,message,data},code===0 成功 if (res?.code === 0 && res.data?.access_token) { token.value = res.data.access_token user.value = res.data.user || null return { ok: true, user: res.data.user } } return { ok: false, message: res?.message || '登录失败' } } catch (e: any) { return { ok: false, message: e?.data?.statusMessage || e?.message || '登录失败' } } } async function register(payload: Record) { try { const res: any = await $fetch('/api/tender/register', { method: 'POST', body: payload }) if (res?.code === 0 && res.data?.access_token) { token.value = res.data.access_token user.value = res.data.user || null return { ok: true, user: res.data.user } } return { ok: false, message: res?.message || '注册失败' } } catch (e: any) { return { ok: false, message: e?.data?.statusMessage || e?.message || '注册失败' } } } function logout() { token.value = null user.value = null } return { token, user, isLoggedIn, login, register, logout } }