Добавил поддержку webhook от репликатора
This commit is contained in:
@@ -73,3 +73,5 @@ VITE_APP_VERSION="${APP_VERSION}"
|
|||||||
VITE_APP_TAG="${APP_TAG}"
|
VITE_APP_TAG="${APP_TAG}"
|
||||||
|
|
||||||
VITE_SENTRY_DNS=
|
VITE_SENTRY_DNS=
|
||||||
|
|
||||||
|
SYNCIO_SECRET=
|
||||||
|
|||||||
29
app/Http/Controllers/Api/Syncio/SyncioWebhookController.php
Normal file
29
app/Http/Controllers/Api/Syncio/SyncioWebhookController.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Api\Syncio;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class SyncioWebhookController extends Controller
|
||||||
|
{
|
||||||
|
public function __invoke(Request $request)
|
||||||
|
{
|
||||||
|
// Проверка секрета
|
||||||
|
if ($request->header('X-Syncio-Secret') !== config('services.syncio.secret')) {
|
||||||
|
abort(403);
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = $request->json()->all();
|
||||||
|
// $data['status'] 'success' | 'partial_success' | 'failed'
|
||||||
|
// $data['tables']['success'] кол-во успешных
|
||||||
|
// $data['errors'] массив ошибок
|
||||||
|
|
||||||
|
// Дальше что нужно:
|
||||||
|
// ReplicationFinished::dispatch($data); // Job в очередь
|
||||||
|
// event(new ReplicationCompleted($data)); // Laravel Event
|
||||||
|
// Cache::put('replication_status', $data, now()->addHours(24));
|
||||||
|
|
||||||
|
return response()->noContent(); // 204
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,6 +17,9 @@ return Application::configure(basePath: dirname(__DIR__))
|
|||||||
HandleInertiaRequests::class,
|
HandleInertiaRequests::class,
|
||||||
'auth' => \App\Http\Middleware\Authenticate::class,
|
'auth' => \App\Http\Middleware\Authenticate::class,
|
||||||
]);
|
]);
|
||||||
|
$middleware->validateCsrfTokens(except: [
|
||||||
|
'api/syncio/webhook'
|
||||||
|
]);
|
||||||
})
|
})
|
||||||
->withExceptions(function (Exceptions $exceptions): void {
|
->withExceptions(function (Exceptions $exceptions): void {
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -35,4 +35,8 @@ return [
|
|||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'syncio' => [
|
||||||
|
'secret' => env('SYNCIO_SECRET'),
|
||||||
|
]
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -114,4 +114,8 @@ Route::middleware(['auth:sanctum'])->group(function () {
|
|||||||
Route::post('close', [\App\Http\Controllers\Web\DutyReportController::class, 'closeObservation']);
|
Route::post('close', [\App\Http\Controllers\Web\DutyReportController::class, 'closeObservation']);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Route::prefix('syncio')->group(function () {
|
||||||
|
Route::post('webhook', \App\Http\Controllers\Api\Syncio\SyncioWebhookController::class);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user