// utils/auth.js - Vue.js 认证工具
import { useUserStore } from '@/store/user'

export const auth = {
  // 快速检查登录状态
  checkAuth() {
    const userStore = useUserStore()
    return userStore.checkAuth()
  },
  
  // 获取用户信息
  getUserInfo() {
    const userStore = useUserStore()
    return userStore.userInfo
  },
  
  // 获取Token
  getToken() {
    const userStore = useUserStore()
    return userStore.token
  },
  
  // 登录拦截器（页面级别使用）
  requireAuth() {
    if (!this.checkAuth()) {
      uni.showModal({
        title: '提示',
        content: '请先登录',
        success: (res) => {
          if (res.confirm) {
            uni.navigateTo({ url: '/pages/login/login' })
          }
        }
      })
      return false
    }
    return true
  },
  
  // 退出登录
  logout() {
    const userStore = useUserStore()
    userStore.logout()
  },
  
  // 角色权限检查
  hasRole(roleId) {
    const userInfo = this.getUserInfo()
    return userInfo && userInfo.role_id === roleId
  },
  
  // 是否为管理员
  isAdmin() {
    return this.hasRole(1) || this.hasRole(2)
  },
  
  // 是否为普通用户
  isUser() {
    return this.hasRole(3)
  }
}

// 路由拦截器工具
export const routeGuard = {
  // 检查页面访问权限
  checkPageAuth(pagePath) {
    // 定义需要登录的页面
    const authRequiredPages = [
      '/pages/application/application',
      '/pages/policies/policies',
      '/pages/claims/claims',
      '/pages/my/my'
    ]
    
    if (authRequiredPages.includes(pagePath)) {
      return auth.requireAuth()
    }
    
    return true
  },
  
  // 管理员页面权限检查
  checkAdminAuth() {
    if (!auth.checkAuth()) {
      uni.showModal({
        title: '提示',
        content: '请先登录',
        success: (res) => {
          if (res.confirm) {
            uni.navigateTo({ url: '/pages/login/login' })
          }
        }
      })
      return false
    }
    
    if (!auth.isAdmin()) {
      uni.showToast({
        title: '权限不足',
        icon: 'none'
      })
      return false
    }
    
    return true
  }
}

export default auth