user(); $allowedFilters = ['*']; $allowedSortings = ['*']; $query = Mission::query(); if ($user->hasPermissionTo('mission-manage-city')) { $query->where('city_id', $user->edarate_shahri_id); } elseif ($user->hasPermissionTo('mission-manage-province')) { $query->where('province_id', $user->province_id); } elseif ($user->hasPermissionTo('mission-manage-country')) { } return DataTableFacade::run( $query, $request, allowedFilters: $allowedFilters, allowedSortings: $allowedSortings ); } public function getMission(User $user, Mission $mission): Mission { $allowed = $user->hasPermissionTo('mission-manage-country') || ($user->hasPermissionTo('mission-manage-province') && $mission->province_id === $user->province_id) || ($user->hasPermissionTo('mission-manage-city') && $mission->city_id === $user->edarate_shahri_id); abort_unless($allowed, 403); return $mission->load(['machines','rahdars']); } }