<?php namespace Pterodactyl\Providers; use Illuminate\Support\Str; use Laravel\Sanctum\Sanctum; use Pterodactyl\Models\User; use Pterodactyl\Models\Server; use Pterodactyl\Models\Subuser; use Illuminate\Support\Facades\URL; use Illuminate\Support\Facades\Schema; use Illuminate\Support\ServiceProvider; use Pterodactyl\Observers\UserObserver; use Pterodactyl\Observers\ServerObserver; use Pterodactyl\Observers\SubuserObserver; use Pterodactyl\Models\PersonalAccessToken; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. */ public function boot() { Schema::defaultStringLength(191); User::observe(UserObserver::class); Server::observe(ServerObserver::class); Subuser::observe(SubuserObserver::class); /* * @see https://laravel.com/docs/8.x/sanctum#overriding-default-models */ Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class); // If the APP_URL value is set with https:// make sure we force it here. Theoretically // this should just work with the proxy logic, but there are a lot of cases where it // doesn't, and it triggers a lot of support requests, so lets just head it off here. // // @see https://github.com/pterodactyl/panel/issues/3623 if (Str::startsWith(config('app.url') ?? '', 'https://')) { URL::forceScheme('https'); } } /** * Register application service providers. */ public function register() { Sanctum::ignoreMigrations(); // Only load the settings service provider if the environment // is configured to allow it. if (!config('pterodactyl.load_environment_only', false) && $this->app->environment() !== 'testing') { $this->app->register(SettingsServiceProvider::class); } } }