Files
ABSDEV/Modules/Licensing/Providers/IntegratedLicensingServiceProvider.php
T
2026-10-12 15:27:09 +01:00

41 lines
1.8 KiB
PHP

<?php
namespace Modules\Licensing\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate;
use App\Models\User;
/** Explicitly mounted licensing API. Portal integration remains gated pending auth review. */
final class IntegratedLicensingServiceProvider extends ServiceProvider
{
public function boot(): void
{
RateLimiter::for('license-activation', static fn (Request $request): array => [
Limit::perMinute(12)->by($request->ip()),
Limit::perMinute(6)->by(hash('sha256', (string) $request->input('installationID'))),
]);
$this->mergeConfigFrom(base_path('config/sonardesk-paddle.php'), 'sonardesk-paddle');
$this->mergeConfigFrom(base_path('config/sonardesk-integration.php'), 'sonardesk-integration');
$this->loadMigrationsFrom(__DIR__.'/../Database/Migrations');
$this->loadViewsFrom(__DIR__.'/../Resources/views', 'licensing');
$this->mergeConfigFrom(__DIR__.'/../Config/config.php', 'licensing');
// Explicit role-based authorization; deny access by default.
Gate::define('manage-sonardesk-licensing', static fn (User $user): bool =>
($user->hasPermissionTo('manage-sonardesk-licensing', 'web') || $user->hasAnyRole(['Super Admin', 'super-admin', 'Administrator']))
);
Route::prefix('api')->middleware('api')->group(__DIR__.'/../Routes/api.php');
Route::group([], __DIR__.'/../Routes/admin.php');
Route::group([], __DIR__.'/../Routes/customer.php');
Route::group([], __DIR__.'/../Routes/distribution.php');
Route::group([], __DIR__.'/../Routes/checkout.php');
}
}