permission-usage-examples.md
3.11 KB
权限管理系统使用示例
本文档展示了如何在项目中使用新的权限管理系统。
基本用法
1. 在页面中检查权限
import { checkPermission, PERMISSION_TYPES } from '@/utils/permission'
// 检查卖车权限
const handleSellCar = async () => {
const hasPermission = await checkPermission(PERMISSION_TYPES.SELL_CAR)
if (hasPermission) {
// 执行卖车操作
Taro.navigateTo({ url: '/pages/sell/index' })
}
}
// 检查购买权限
const handleBuyCar = async () => {
const hasPermission = await checkPermission(PERMISSION_TYPES.BUY_CAR)
if (hasPermission) {
// 执行购买操作
onPay({ id: carId, price: price })
}
}
2. 使用用户状态管理
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()
// 获取用户信息
await userStore.fetchUserInfo()
// 检查用户是否已认证
if (userStore.isAuthenticated) {
// 用户已认证
}
// 检查用户资料是否完整
if (userStore.hasCompleteProfile) {
// 用户资料完整
}
3. 批量权限检查
import { checkMultiplePermissions, PERMISSION_TYPES } from '@/utils/permission'
const permissions = await checkMultiplePermissions([
PERMISSION_TYPES.SELL_CAR,
PERMISSION_TYPES.ORDER_MANAGEMENT,
PERMISSION_TYPES.MESSAGE
])
if (permissions.SELL_CAR) {
// 有卖车权限
}
if (permissions.ORDER_MANAGEMENT) {
// 有订单管理权限
}
4. 自定义权限检查
import { checkUserFields } from '@/utils/permission'
// 检查用户是否填写了特定字段
const hasRequiredFields = await checkUserFields(['phone', 'school', 'nickname'])
if (hasRequiredFields) {
// 用户已填写所有必需字段
}
权限类型说明
-
BASIC_INFO: 基础信息权限(需要手机号) -
SELL_CAR: 卖车权限(需要手机号) -
BUY_CAR: 买车权限(需要手机号) -
CONTACT_SELLER: 联系卖家权限(需要手机号) -
ORDER_MANAGEMENT: 订单管理权限(需要手机号) -
MESSAGE: 消息权限(需要手机号) -
PROFILE: 个人资料权限(需要手机号) -
COMPLETE_PROFILE: 完整资料权限(需要手机号、学校、昵称)
扩展权限类型
如需添加新的权限类型,请在 /src/utils/permission.js 中:
- 在
PERMISSION_TYPES中添加新类型 - 在
PERMISSION_CONFIG中配置权限要求 - 根据需要自定义提示信息和跳转逻辑
// 添加新权限类型
export const PERMISSION_TYPES = {
// ... 现有类型
NEW_FEATURE: 'NEW_FEATURE'
}
// 配置权限要求
export const PERMISSION_CONFIG = {
// ... 现有配置
[PERMISSION_TYPES.NEW_FEATURE]: {
requiredFields: ['phone', 'realName'], // 需要的字段
message: '使用此功能需要完善手机号和真实姓名',
redirectUrl: '/pages/register/index'
}
}
注意事项
- 权限检查是异步操作,请使用
await或.then() - 权限检查失败时会自动显示提示并跳转到注册页面
- 用户状态会自动缓存,避免重复请求
- 建议在页面加载时预先获取用户信息以提升用户体验