mooxphp/moox

View on GitHub
packages/sync/routes/api.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

use Illuminate\Support\Facades\Route;
use Moox\Sync\Http\Controllers\SyncWebhookController;

$models = config('sync.entities');
if (is_array($models)) {
    foreach ($models as $entity => $config) {
        if ($config['api']['enabled']) {
            $middleware = [];

            if (! $config['api']['public']) {
                $middleware[] = $config['api']['auth_type'] === 'platform' ? 'auth.platformtoken' : 'auth:sanctum';
            }

            Route::middleware($middleware)->prefix('api')->group(function () use ($entity, $config) {
                Route::apiResource(Str::lower($entity), $config['api_controller'])->only($config['api']['active_routes']);
            });
        }
    }
}

Route::middleware('auth.platformtoken')->prefix('api')->group(function () {
    Route::get('platform/{id}/sync', [\Moox\Sync\Http\Controllers\Api\PlatformSyncController::class, 'index']);
});

$webhookPath = config('sync.sync_webhook_url', '/sync-webhook');
Route::post($webhookPath, [SyncWebhookController::class, 'handle'])
    ->middleware('webhook.auth');