// xuchao: 登录层 —— 登录逻辑全部隔离在这里 // 一期为假登录(开发模式),后端微信登录接口就绪后只改本文件: // - loginByMock 开发模式:输入测试手机号直接登录 // - loginByWechat 正式流程:用微信网页授权凭证(code)换用户信息 // - bindPhoneBySms 正式流程:短信验证码绑定手机号(微信授权拿不到手机号时用) import config from '@/common/config.js' // 是否已登录(本地缓存里有手机号即视为已登录) const isLogin = () => { return !!uni.getStorageSync('phone') } // xuchao: 登录校验 —— 未登录则跳登录页,登录成功后回跳 redirect 指定的页面 const requireLogin = (redirect) => { if (isLogin()) return true uni.navigateTo({ url: '/pages/index/authorization' + (redirect ? '?redirect=' + encodeURIComponent(redirect) : '') }) return false } // xuchao: 开发模式假登录 —— 写入与真实登录相同的缓存数据,后续页面逻辑完全一致 const loginByMock = (phone) => { uni.setStorageSync('phone', phone) uni.setStorageSync('openId', 'mock_openid_' + phone) uni.setStorageSync('userId', '') } // xuchao: 正式流程占位 —— 后端接口就绪后实现(用 code 换 openId + 用户信息) const loginByWechat = (code) => { return new Promise((resolve, reject) => { // TODO 后端就绪后替换为:POST /auth/oauth2session {code} → {openId, mobile, token} reject(new Error('微信登录接口未接入')) }) } // xuchao: 正式流程占位 —— 短信验证码绑定手机号 const bindPhoneBySms = (phone, smsCode) => { return new Promise((resolve, reject) => { // TODO 后端就绪后替换为:短信验证码校验 + 手机号绑定 openId reject(new Error('短信绑定接口未接入')) }) } // 退出登录 const logout = () => { uni.removeStorageSync('phone') uni.removeStorageSync('openId') uni.removeStorageSync('userId') uni.removeStorageSync('token') } export default { isLogin, requireLogin, loginByMock, loginByWechat, bindPhoneBySms, logout, devMode: config.devMode }