fix: ajustar el filtrado de registros por módulo del usuario

This commit is contained in:
Juan Felipe Zapata Moreno 2026-02-16 12:48:29 -06:00
parent 2093ff7538
commit 43269ca04a
2 changed files with 35 additions and 23 deletions

View File

@ -9,7 +9,6 @@
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\VehicleTagLog;
use App\Models\Tag;
use App\Models\Module;
use App\Models\Record;
use App\Models\TagCancellationLog;
@ -21,6 +20,7 @@
use PhpOffice\PhpSpreadsheet\Style\Border as PhpSpreadsheetBorder;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
use Illuminate\Support\Facades\Auth;
/**
@ -1193,7 +1193,8 @@ public function exportSearchRecords(Request $request)
]);
// Reutilizar la misma query de búsqueda (sin paginación)
$records = Record::with([
$records = Record::forUserModule(Auth::user())
->with([
'vehicle',
'vehicle.owner',
'vehicle.tag:id,vehicle_id,folio,tag_number,status_id,package_id,module_id',

View File

@ -63,12 +63,23 @@ public function vehicleTagLog()
/**
* Filtra registros por módulo del usuario
* Admin y developer pueden ver todos los registros
* Otros usuarios solo ven registros de su módulo
*/
public function scopeForUserModule($query, $user)
{
if ($user->hasRole('admin')) {
$isAdminOrDeveloper = $user->hasRole(['admin', 'developer'])
|| $user->hasRole(['admin', 'developer'], 'api')
|| $user->roles()->whereIn('name', ['admin', 'developer'])->exists();
if ($isAdminOrDeveloper) {
return $query;
}
if (is_null($user->module_id)) {
return $query->whereRaw('1 = 0');
}
return $query->where('module_id', $user->module_id);
}
}