// utils/imAuth/jianquanxian.js // 原:require('./laobanjianquan') // 改: const { laobanjianquan } = require('./laobanjianquan.js'); const { dashoujianquan } = require('./dashoujianquan.js'); /** * IM 长连接权限统一入口 * 按顺序进行: * 1. 检查本地 token/uid 是否存在 * 2. 若不存在,强制断开已有连接,弹窗提示未登录(强制阅读 2 秒) * 3. 若存在,根据当前角色调用具体的鉴权模块 * * @param {Object} app 全局 App 实例 * @returns {Promise<{ allowed: boolean, reason?: string }>} */ async function jianquanxian(app) { // 1. 检测登录态(用 uid 或 token) const token = wx.getStorageSync('token') || wx.getStorageSync('uid'); if (!token) { // 没登录:先强制断开(如果已连接) await app.disconnectGoEasy(); // 弹窗提示,强制阅读 2 秒 wx.showToast({ title: '您当前处于未登录状态,消息功能暂不可用', icon: 'none', duration: 2000, mask: true }); // 等待提示结束,确保用户看到 await new Promise(resolve => setTimeout(resolve, 2100)); return { allowed: false, reason: '未登录' }; } // 2. 获取当前选中的角色 const role = app.globalData.currentRole || 'normal'; // 3. 根据角色分发到具体鉴权模块 switch (role) { case 'normal': // 点单老板 return laobanjianquan(app); case 'dashou': // 打手 return dashoujianquan(app); // 其他角色暂未细分,统一放行(后续可新增对应文件) case 'shangjia': case 'guanshi': case 'zuzhang': case 'kaoheguan': return { allowed: true }; default: return { allowed: false, reason: '未知角色' }; } } module.exports = { jianquanxian };