/** * Reduced query to only reports that the user is directly responsible for. * This means 'site.reports' open `global` ONLY and 'board.reports' only matter in direct assignment. * * @param PermissionUser $user */ public function scopeWhereResponsibleFor($query, PermissionUser $user) { return $query->where(function ($query) use($user) { $query->whereIn('board_uri', $user->canInBoards('board.reports')); if (!$user->can('site.reports')) { $query->where('global', false); } else { $query->orWhere('global', true); } }); }