import http, { clearToken, getToken, setToken } from '../request' export { getToken } export interface LoginResult { accessToken: string isNewUser: boolean // 首次登录(未设资料)为 true,前端需引导补填头像/姓名 nickname: string | null avatar: string | null } /** * 登录:把 wx.login() 的 code 交给后端,后端用 code2Session 换 openid, * 自动注册/续登并签发 accessToken(个人主体无需手机号)。 * 返回 isNewUser 供前端判断是否需补全资料。 */ export async function login(code: string): Promise { const data = await http.post('/api/auth/login', { code }, { auth: false }) if (data?.accessToken) { setToken(data.accessToken) } return data } /** * 首次注册:用 registerTicket + wx.getPhoneNumber 的 code 验证手机号,完成后自动登录 */ export async function registerWithPhone( registerTicket: string, phoneCode: string, profile?: { nickname?: string; avatar?: string }, ): Promise<{ accessToken: string }> { const data = await http.post<{ accessToken: string }>( '/api/auth/register', { registerTicket, phoneCode, ...profile }, { auth: false }, ) setToken(data.accessToken) return data } /** 登出:仅清除本地 token(后端 JWT 无状态,无需撤销) */ export function logout(): void { clearToken() }