fix: resolve tenant_id scoping issue on QR code batch generation

This commit is contained in:
Developer
2026-06-30 15:59:03 +08:00
parent 6c83d99fd7
commit d66d6e3396
2 changed files with 42 additions and 16 deletions

View File

@@ -44,6 +44,7 @@ class ScannerController extends ApiController
public function scan(Request $request): JsonResponse
{
\Illuminate\Support\Facades\Log::info("DEBUG: Entering ScannerController::scan");
$data = $request->validate([
'serial' => ['required', 'string', 'max:64'],
'drop_off_point_id' => ['required', 'integer', 'exists:drop_off_points,id'],
@@ -63,22 +64,30 @@ class ScannerController extends ApiController
$stop = isset($data['trip_stop_id']) ? TripStop::find($data['trip_stop_id']) : null;
\Illuminate\Support\Facades\Log::info("Scan attempt", ['serial' => $data['serial'] ?? 'none']);
$result = $this->scanner->scan(
serial: $data['serial'],
dropOff: $dop,
scanner: $request->user(),
lat: (float) $data['lat'],
lng: (float) $data['lng'],
trip: $trip,
tripStop: $stop,
weightKg: $data['weight_kg'] ?? null,
wasteType: $data['waste_type'] ?? null,
photoPath: $data['photo_path'] ?? null,
notes: $data['notes'] ?? null,
scannedAt: isset($data['scanned_at']) ? Carbon::parse($data['scanned_at']) : null,
);
try {
$result = $this->scanner->scan(
serial: $data['serial'],
dropOff: $dop,
scanner: $request->user(),
lat: (float) $data['lat'],
lng: (float) $data['lng'],
trip: $trip,
tripStop: $stop,
weightKg: $data['weight_kg'] ?? null,
wasteType: $data['waste_type'] ?? null,
photoPath: $data['photo_path'] ?? null,
notes: $data['notes'] ?? null,
scannedAt: isset($data['scanned_at']) ? Carbon::parse($data['scanned_at']) : null,
);
} catch (\Throwable $e) {
\Illuminate\Support\Facades\Log::error("DEBUG: Scan Exception: " . $e->getMessage() . "\n" . $e->getTraceAsString());
throw $e;
}
\Illuminate\Support\Facades\Log::info("DEBUG: Scan completed", ['accepted' => $result->accepted, 'reason' => $result->rejectReason ?? 'none']);
if (! $result->accepted) {
\Illuminate\Support\Facades\Log::warning("Scan rejected internally", ['serial' => $data['serial'], 'reason' => $result->rejectReason]);
return $this->fail(
'Scan rejected',
['reason' => [$result->rejectReason]],
@@ -86,11 +95,14 @@ class ScannerController extends ApiController
);
}
return $this->ok([
$res = [
'serial' => $result->code->serial,
'log_id' => $result->log->id,
'status' => (string) $result->code->status,
], 'Scan recorded');
];
\Illuminate\Support\Facades\Log::info("Scan Response OK", $res);
return $this->ok($res, 'Scan recorded');
}
/**