userPermissionsKey()
userPermissionsKey(int $userId) : string
用户权限码缓存的注册表 key(user:permission:list)
Parameters
| int | $userId |
权限缓存服务
职责:负责用户权限码的 Redis 缓存读写与缓存清理。key 一律经注册表映射 (CacheManager::key)——改 key 模板代码无感、纳入治理。反向索引 (role_permissions/permission_roles)已随权限收敛删除;权限码变更失效走模型事件 (invalidateByTable 按 td_sys_permission 推导全用户)。
┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · Key 生成 userPermissionsKey 分区 2 · 权限加载与查询 loadUserPermissions / resolveUserRoleIds / queryUserPermissions getUserPermissions / hasPermission 分区 3 · 委派上界 assertOperatorCoversPermissionIds 分区 4 · 缓存清理 clearUserScopesFor / clearUserPermissions / clearUsersPermissions clearRoleUsersPermissions / clearOnLogout └────────────────────────────────────────────────────────────┘
assertOperatorCoversPermissionIds(array $permissionIds) : void
委派上界:提交的权限 id 必须 ⊆ 操作者自身权限 id(超管豁免)。
ConfigRoleService::syncPermissions 与 UserConfigService::syncUserPermissions 共用单源 (此前两份逐字相同实现有分叉风险)。
| array | $permissionIds |
含越权权限码时抛 403
clearUserPermissions(int $userId) : void
清理指定用户的权限缓存。 user_permissions 是裸 Redis Set(sismember 性能);user_menus 已迁 CacheManager(tag 存储, 裸 Redis del 无效,必须走 CacheManager::forget)。 user:dept:scope(可见部门集)同属用户层缓存一并清——删用户/任职同步后 不再残留孤儿缓存(原缺口:td_sys_user_dept 批量直写不触发模型事件,仅靠此手动清)。
| int | $userId |