usePlanPermission.js
2.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/**
* 计划书权限检查 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
}
}