0 已删除 ]; /** * set password * * @time 2019年12月07日 * @param $value * @return false|string */ public function setPasswordAttr($value) { return password_hash($value, PASSWORD_DEFAULT); } /** * 用户列表 * * @time 2019年12月08日 * @throws \think\db\exception\DbException * @return \think\Paginator */ public function getList(): \think\Paginator { return $this->withoutField(['updated_at'], true) ->catchSearch() ->catchLeftJoin(Department::class, 'id', 'department_id', ['department_name']) ->order($this->aliasField('id'), 'desc') ->paginate(); } /** * 获取权限 * * @time 2019年12月12日 * @param $uid * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @return array */ public function getPermissionsBy($uid = 0): array { // 获取超级管理配置 超级管理员全部权限 if ($uid == config('catch.permissions.super_admin_id')) { return Permissions::select()->column('id'); } $roles = $uid ? $this->findBy($uid)->getRoles() : $this->getRoles(); $permissionIds = []; foreach ($roles as $role) { $permissionIds = array_merge($permissionIds, $role->getPermissions()->column('id')); } return array_unique($permissionIds); } /** * 后台根据权限标识判断用户是否拥有某个权限 * @param string $permission_mark * @return bool * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * * 用法 request()->user()->can('permission@create'); */ public function can($permission_mark = '') { // 超级管理员直接返回true if (Utils::isSuperAdmin()){ return true; } // 查询当前用户的权限 $permissionIds = $this->getPermissionsBy(); // 根据mark找对应的id $current = Permissions::where('permission_mark',$permission_mark)->find(); if (!$current){ return false; } // in_array 判断是否包含 return in_array($current['id'],$permissionIds); } }