Agrega endpoints para crear, editar y asociar instancias a clientes y tipos de sitio. Valida las credenciales contra el esquema del catalogo y devuelve metadatos sin secretos. Restringe la administracion al rol admin autenticado y mantiene inmutables los codigos de integracion. Incluye pruebas de API, permisos, prioridad de resolucion, edicion compartida y renovacion de tokens.
39 lines
2.1 KiB
PHP
39 lines
2.1 KiB
PHP
<?php
|
|
|
|
use App\Domains\Integration\Controllers\ClientIntegrationController;
|
|
use App\Domains\Integration\Controllers\IntegrationController;
|
|
use App\Domains\Integration\Controllers\IntegrationInstanceController;
|
|
use App\Domains\Integration\Controllers\TelepagosWebhookController;
|
|
use App\Domains\Integration\Controllers\WebsiteTypeIntegrationController;
|
|
use App\Domains\Integration\Models\Integration;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::middleware(['auth:sanctum', 'can:manage,'.Integration::class])->group(function (): void {
|
|
Route::apiResource('integration-instances', IntegrationInstanceController::class);
|
|
|
|
Route::prefix('website-types/{websiteType:codigo}/integrations')->group(function (): void {
|
|
Route::get('/', [WebsiteTypeIntegrationController::class, 'index']);
|
|
Route::get('/{integration_code}', [WebsiteTypeIntegrationController::class, 'show']);
|
|
Route::put('/{integration_code}', [WebsiteTypeIntegrationController::class, 'store']);
|
|
Route::delete('/{integration_code}', [WebsiteTypeIntegrationController::class, 'destroy']);
|
|
});
|
|
|
|
Route::group(['prefix' => 'integrations'], function () {
|
|
Route::get('/', [IntegrationController::class, 'index']);
|
|
Route::post('/', [IntegrationController::class, 'store']);
|
|
Route::get('/{integration}', [IntegrationController::class, 'show']);
|
|
Route::put('/{integration}', [IntegrationController::class, 'update']);
|
|
Route::delete('/{integration}', [IntegrationController::class, 'destroy']);
|
|
});
|
|
|
|
Route::group(['prefix' => 'clients/{client}/integrations'], function () {
|
|
Route::get('/', [ClientIntegrationController::class, 'index']);
|
|
Route::get('/{integration_code}', [ClientIntegrationController::class, 'show']);
|
|
Route::put('/{integration_code}', [ClientIntegrationController::class, 'store']);
|
|
Route::put('/{integration_code}/instance', [ClientIntegrationController::class, 'associate']);
|
|
Route::delete('/{integration_code}', [ClientIntegrationController::class, 'destroy']);
|
|
});
|
|
});
|
|
|
|
Route::post('webhooks/telepagos/{client}', [TelepagosWebhookController::class, 'handle']);
|