activity-role.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /**
  2. * 活动管理权限判定(小程序端)
  3. *
  4. * 与后端 `ActivityController.hasActivityManageRole`(com.etotem.cfc.controller)保持一致:
  5. * 后台角色 admin / activity_admin 直接放行;roles 列表含 activity_manager 也放行。
  6. *
  7. * 注意:小程序登录态里 userInfo 只存 nickname/userId/familyId,
  8. * 角色存在独立的 `role` / `currentRole` storage key 里(见 App.vue saveLoginInfo、utils/api.js _applyLoginData),
  9. * 所以不能只读 userInfo.role,否则永远判为无权限。
  10. */
  11. var ACTIVITY_MANAGE_ROLES = ['admin', 'activity_admin', 'activity_manager']
  12. function hasRoleInList(list, role) {
  13. if (!list || !list.length) return false
  14. for (var i = 0; i < list.length; i++) {
  15. if (list[i] === role) return true
  16. }
  17. return false
  18. }
  19. /**
  20. * 当前登录账号是否有活动管理权限(后台角色)
  21. * @returns {boolean}
  22. */
  23. export function hasActivityManageRole() {
  24. var mainRole = uni.getStorageSync('currentRole') || uni.getStorageSync('role') || ''
  25. if (hasRoleInList(ACTIVITY_MANAGE_ROLES, mainRole)) return true
  26. var userInfo = uni.getStorageSync('userInfo') || {}
  27. if (hasRoleInList(ACTIVITY_MANAGE_ROLES, userInfo.role)) return true
  28. if (hasRoleInList(ACTIVITY_MANAGE_ROLES, userInfo.roles)) return true
  29. return false
  30. }
  31. /**
  32. * vendorStatus 接口返回是否表示「已通过审核的活动提供商」
  33. * @param {Object} vendorStatusData /api/vendor/status 的 data 字段
  34. * @returns {boolean}
  35. */
  36. export function isApprovedActivityProvider(vendorStatusData) {
  37. var d = vendorStatusData || {}
  38. return d.vendorType === 'activity_provider' && d.vendorStatus === 'approved'
  39. }