123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- /**
- * 用户认证相关工具函数
- */
- // 检查用户是否已登录
- export function isLoggedIn() {
- const token = uni.getStorageSync('userToken')
- const loginTime = uni.getStorageSync('loginTime')
-
- if (!token || !loginTime) {
- return false
- }
-
- // 检查登录是否过期(7天)
- const now = Date.now()
- const expired = now - loginTime > 7 * 24 * 60 * 60 * 1000
-
- if (expired) {
- clearUserData()
- return false
- }
-
- return true
- }
- // 获取用户信息
- export function getUserInfo() {
- if (!isLoggedIn()) {
- return null
- }
-
- const userInfo = uni.getStorageSync('userInfo')
- if (userInfo) {
- return userInfo
- }
-
- // 兼容老版本数据
- return {
- token: uni.getStorageSync('userToken'),
- phone: uni.getStorageSync('userPhone'),
- loginTime: uni.getStorageSync('loginTime')
- }
- }
- // 清除用户数据
- export function clearUserData() {
- uni.removeStorageSync('userToken')
- uni.removeStorageSync('userInfo')
- uni.removeStorageSync('userPhone') // 兼容老版本
- uni.removeStorageSync('loginTime')
-
- // 更新全局状态
- try {
- const app = getApp()
- if (app && app.globalData) {
- app.globalData.isLoggedIn = false
- app.globalData.userInfo = null
- }
- } catch (error) {
- console.log('更新全局状态失败,可能App还未初始化完成')
- }
- }
- // 需要登录权限的操作类型
- export const PROTECTED_ACTIONS = {
- ADD_TO_CART: 'add_to_cart', // 加入购物车
- BUY_NOW: 'buy_now', // 立即购买
- VIEW_MY_PAGE: 'view_my_page', // 点击"我的"
- VIEW_LEGOU: 'view_legou' // 点击"乐购"
- }
- // 需要登录权限的页面列表(已废弃,仅保留4个动作的权限控制)
- export const PROTECTED_PAGES = []
- // 检查页面是否需要登录权限
- export function isProtectedPage(url) {
- return PROTECTED_PAGES.some(page => url.includes(page))
- }
- // 跳转到登录页面
- export function navigateToLogin(returnUrl = '') {
- const loginUrl = '/pages/auth/login'
-
- if (returnUrl) {
- uni.setStorageSync('returnUrl', returnUrl)
- }
-
- uni.navigateTo({
- url: loginUrl,
- fail() {
- // 如果是tabBar页面,使用reLaunch
- uni.reLaunch({
- url: loginUrl
- })
- }
- })
- }
- // 登录后返回原页面
- export function navigateBack() {
- const returnUrl = uni.getStorageSync('returnUrl')
-
- // tabBar页面列表
- const tabBarPages = [
- '/pages/index/index',
- '/pages/community/index',
- '/pages/legou/index',
- '/pages/cart/index',
- '/pages/user/index'
- ]
-
- if (returnUrl) {
- uni.removeStorageSync('returnUrl')
- console.log('导航返回原页面:', returnUrl)
-
- if (tabBarPages.includes(returnUrl)) {
- uni.switchTab({
- url: returnUrl
- })
- } else {
- uni.reLaunch({
- url: returnUrl
- })
- }
- } else {
- console.log('导航到首页')
- // 使用switchTab跳转到tabBar页面
- uni.switchTab({
- url: '/pages/index/index'
- })
- }
- }
- // 权限拦截器 - 在需要权限的操作前调用
- export function requireAuth(callback, options = {}) {
- if (isLoggedIn()) {
- // 已登录,执行回调
- if (typeof callback === 'function') {
- callback()
- }
- return true
- } else {
- // 未登录,显示提示并跳转登录
- const actionMessages = {
- [PROTECTED_ACTIONS.ADD_TO_CART]: '加入购物车需要先登录',
- [PROTECTED_ACTIONS.BUY_NOW]: '立即购买需要先登录',
- [PROTECTED_ACTIONS.VIEW_MY_PAGE]: '访问"我的"页面需要先登录',
- [PROTECTED_ACTIONS.VIEW_LEGOU]: '访问"乐购"页面需要先登录'
- }
-
- const message = options.message || actionMessages[options.action] || '请先登录后再进行此操作'
-
- uni.showModal({
- title: '提示',
- content: message,
- confirmText: '去登录',
- cancelText: '暂不登录',
- success(res) {
- if (res.confirm) {
- navigateToLogin(options.returnUrl)
- }
- }
- })
- return false
- }
- }
- // 静默权限检查(不显示弹窗)
- export function checkAuth() {
- return isLoggedIn()
- }
- // 手机号格式验证
- export function validatePhoneNumber(phone) {
- const phoneRegex = /^1[3-9]\d{9}$/
- return phoneRegex.test(phone)
- }
- // 验证码格式验证
- export function validateSmsCode(code) {
- const codeRegex = /^\d{6}$/
- return codeRegex.test(code)
- }
- // 用户权限级别(已废弃,仅保留4个动作的权限控制)
- export const USER_LEVELS = {
- GUEST: 0, // 游客
- NORMAL: 1 // 普通用户
- }
- // 获取用户权限级别(已废弃)
- export function getUserLevel() {
- const userInfo = getUserInfo()
- return userInfo?.level || USER_LEVELS.GUEST
- }
- // 检查用户是否有特定权限(已废弃)
- export function hasPermission(requiredLevel) {
- const userLevel = getUserLevel()
- return userLevel >= requiredLevel
- }
|