usePlanPermission.js 2.12 KB
/**
 * 计划书权限检查 Composable
 *
 * @description 统一处理制作计划书的登录权限检查
 * @module composables/usePlanPermission
 * @author Claude Code
 * @created 2026-02-12
 */

import { useUserStore } from '@/stores/user'
import Taro from '@tarojs/taro'

/**
 * 计划书权限检查 Hook
 *
 * @description 提供统一的权限检查逻辑,用于制作计划书前的登录验证
 * @returns {Object} 权限检查方法
 *
 * @example
 * const { checkPlanPermission } = usePlanPermission()
 *
 * // 在点击计划书按钮时使用
 * checkPlanPermission(() => {
 *   // 已登录时的回调逻辑
 *   openPlanPopup(productId)
 * })
 */
export function usePlanPermission() {
  const userStore = useUserStore()

  /**
   * 检查计划书权限
   *
   * @description 判断用户是否登录,未登录时提示并引导登录,已登录时执行回调
   * @param {Function} callback - 已登录时执行的回调函数
   * @returns {boolean} 是否有权限(true=已登录,false=未登录)
   *
   * @example
   * const hasPermission = checkPlanPermission(() => {
   *   console.log('用户已登录,可以制作计划书')
   * })
   */
  const checkPlanPermission = (callback) => {
    console.log('[usePlanPermission] 检查权限,当前登录状态:', userStore.isLoggedIn)
    // 检查登录状态
    if (!userStore.isLoggedIn) {
      console.log('[usePlanPermission] 用户未登录,显示登录提示')
      // 未登录,显示提示框
      Taro.showModal({
        title: '提示',
        content: '请先登录后再制作计划书',
        confirmText: '去登录',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            // 用户点击"去登录",跳转到登录页
            console.log('[usePlanPermission] 用户点击去登录')
            Taro.navigateTo({
              url: '/pages/login/index'
            })
          }
        }
      })
      return false
    }

    console.log('[usePlanPermission] 用户已登录,执行回调')
    // 已登录,执行回调
    callback?.()
    return true
  }

  return {
    checkPlanPermission
  }
}