diff --git a/app/Http/Middleware/QueryTokenAuth.php b/app/Http/Middleware/QueryTokenAuth.php new file mode 100644 index 0000000..df3e90a --- /dev/null +++ b/app/Http/Middleware/QueryTokenAuth.php @@ -0,0 +1,18 @@ +has('token') && !$request->headers->has('Authorization')) { + $request->headers->set('Authorization', 'Bearer ' . $request->query('token')); + } + + return $next($request); + } +} diff --git a/resources/views/admin/qr-batches.blade.php b/resources/views/admin/qr-batches.blade.php index be082d1..a5225db 100644 --- a/resources/views/admin/qr-batches.blade.php +++ b/resources/views/admin/qr-batches.blade.php @@ -101,6 +101,7 @@ rows.innerHTML = `No batches yet. Generate your first one.`; return; } + const token = localStorage.getItem('verde:token') ?? ''; rows.innerHTML = items.map(b => { const sc = b.status_counts ?? {}; const printed = b.printed_at @@ -115,7 +116,7 @@ ${sc.used ?? 0} ${printed} - PDF + PDF ${!b.printed_at ? `` : ''} `; diff --git a/routes/api.php b/routes/api.php index 7f4db8b..ceb49b1 100644 --- a/routes/api.php +++ b/routes/api.php @@ -51,6 +51,7 @@ use App\Http\Controllers\Api\V1\Qr\MyQrCodeController; use App\Http\Controllers\Api\V1\Store\PartnerStorePublicController; use App\Http\Controllers\Api\V1\Tenant\TenantLookupController; use App\Http\Controllers\Api\V1\Scanner\ScannerController; +use App\Http\Middleware\QueryTokenAuth; use Illuminate\Support\Facades\Route; /* @@ -226,9 +227,16 @@ Route::prefix('admin/qr-batches') Route::post('/', [AdminQrBatchController::class, 'store'])->name('store'); Route::get('/{qr_code_batch}', [AdminQrBatchController::class, 'show'])->name('show'); Route::post('/{qr_code_batch}/mark-printed', [AdminQrBatchController::class, 'markPrinted'])->name('mark-printed'); - Route::get('/{qr_code_batch}/print.pdf', [AdminQrBatchController::class, 'printPdf'])->name('print-pdf'); }); +Route::get('admin/qr-batches/{qr_code_batch}/print.pdf', [AdminQrBatchController::class, 'printPdf']) + ->middleware([ + QueryTokenAuth::class, + 'auth:sanctum', + 'role:admin,super_admin' + ]) + ->name('api.v1.admin.qr-batches.print-pdf'); + Route::prefix('admin/qr-codes') ->name('api.v1.admin.qr-codes.') ->middleware(['auth:sanctum', 'role:admin'])