[FEAT] 優化機台 API 通訊識別、補齊前端必填驗證、並配置 Demo 站隊列自動化部署 🦾🚀
All checks were successful
star-cloud-deploy-demo / deploy-demo (push) Successful in 49s
All checks were successful
star-cloud-deploy-demo / deploy-demo (push) Successful in 49s
This commit is contained in:
@@ -84,6 +84,7 @@ class MachineSettingController extends AdminController
|
||||
|
||||
$machine = Machine::create(array_merge($validated, [
|
||||
'status' => 'offline',
|
||||
'api_token' => \Illuminate\Support\Str::random(60),
|
||||
'creator_id' => auth()->id(),
|
||||
'updater_id' => auth()->id(),
|
||||
'card_reader_seconds' => 30, // 預設值
|
||||
@@ -119,6 +120,7 @@ class MachineSettingController extends AdminController
|
||||
try {
|
||||
$validated = $request->validate([
|
||||
'name' => 'required|string|max:255',
|
||||
'serial_no' => 'sometimes|required|string|unique:machines,serial_no,' . $machine->id,
|
||||
'card_reader_seconds' => 'required|integer|min:0',
|
||||
'payment_buffer_seconds' => 'required|integer|min:0',
|
||||
'card_reader_checkout_time_1' => 'nullable|string',
|
||||
@@ -187,4 +189,25 @@ class MachineSettingController extends AdminController
|
||||
return redirect()->route('admin.basic-settings.machines.index')
|
||||
->with('success', __('Machine settings updated successfully.'));
|
||||
}
|
||||
|
||||
public function regenerateToken(Request $request, $serial): \Illuminate\Http\JsonResponse
|
||||
{
|
||||
// 僅使用機台序號 (serial_no) 作為識別碼,最直覺且穩定
|
||||
$machine = Machine::where('serial_no', $serial)->firstOrFail();
|
||||
|
||||
$newToken = \Illuminate\Support\Str::random(60);
|
||||
$machine->update(['api_token' => $newToken]);
|
||||
|
||||
\Log::info('Machine API Token Regenerated', [
|
||||
'machine_id' => $machine->id,
|
||||
'serial_no' => $machine->serial_no,
|
||||
'user_id' => auth()->id()
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'api_token' => $newToken,
|
||||
'message' => __('API Token regenerated successfully.')
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
34
app/Http/Controllers/Admin/QrCodeController.php
Normal file
34
app/Http/Controllers/Admin/QrCodeController.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use SimpleSoftwareIO\QrCode\Facades\QrCode;
|
||||
|
||||
class QrCodeController extends Controller
|
||||
{
|
||||
/**
|
||||
* Generate a QR Code image.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function generate(Request $request)
|
||||
{
|
||||
$data = $request->query('data');
|
||||
$size = $request->query('size', 250);
|
||||
|
||||
if (!$data) {
|
||||
return response()->noContent();
|
||||
}
|
||||
|
||||
// Generate SVG QR Code
|
||||
$qrCode = QrCode::size($size)
|
||||
->format('svg')
|
||||
->margin(1)
|
||||
->generate($data);
|
||||
|
||||
return response($qrCode)->header('Content-Type', 'image/svg+xml');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user