JaguarJack / catch-admin

CatchAdmin是一个基于对Laravel和Element Plus进行二次开发的后台管理系统。CatchAdmin仍然采用传统的前后端分离策略,其中Laravel框架仅用作Api输出。通过这种设计,成功将管理系统模块之间的耦合降至最低。
https://catchadmin.com
Apache License 2.0
676 stars 114 forks source link

今天发现一个bug 一个用户多个角色的时候权限有问题 报错in_array() expects parameter 2 to be array, object given #34

Closed 567ai closed 2 years ago

567ai commented 2 years ago

PermissionsMiddleware.php 文件57行

调试发现 Cache::get(CatchCacheKeys::USER_PERMISSIONS . $user->id) 得到的是对象

而 in_array() 参数需要的是数组

所以报错

修改: 加了一个判断是否是对象如果是对象转换成数组

结果程序正常

$ss= Cache::get(CatchCacheKeys::USER_PERMISSIONS . $user->id); $ss= is_object($ss)? (array) $ss: $ss ; if (!$permission || !in_array($permission->id, $ss)) {

      throw new PermissionForbiddenException();
    }

代码命名不规范 坐等作者的规范命名

JaguarJack commented 2 years ago

已 fixed