2016-03-25 01:18:05 -07:00
< ? php
2016-04-07 13:21:09 -07:00
2021-06-10 13:15:52 -07:00
namespace App\Providers ;
2017-11-06 21:17:17 -08:00
2019-03-13 20:12:03 -07:00
use App\Models\Accessory ;
use App\Models\Asset ;
use App\Models\Component ;
use App\Models\Consumable ;
use App\Models\License ;
2023-11-22 12:22:05 -08:00
use App\Models\User ;
2019-03-13 10:58:35 -07:00
use App\Models\Setting ;
2022-03-04 14:00:00 -08:00
use App\Models\SnipeSCIMConfig ;
2017-06-15 20:54:14 -07:00
use App\Observers\AccessoryObserver ;
2019-03-13 20:12:03 -07:00
use App\Observers\AssetObserver ;
2023-11-22 12:22:05 -08:00
use App\Observers\UserObserver ;
2017-06-15 20:54:14 -07:00
use App\Observers\ComponentObserver ;
2019-03-13 20:12:03 -07:00
use App\Observers\ConsumableObserver ;
use App\Observers\LicenseObserver ;
use App\Observers\SettingObserver ;
2021-06-10 13:15:52 -07:00
use Illuminate\Routing\UrlGenerator ;
2019-03-13 20:12:03 -07:00
use Illuminate\Support\Facades\Schema ;
use Illuminate\Support\ServiceProvider ;
2016-04-07 13:21:09 -07:00
2016-03-25 01:18:05 -07:00
/**
2017-11-06 21:17:17 -08:00
* This service provider handles setting the observers on models
2016-03-25 01:18:05 -07:00
*
* PHP version 5.5 . 9
* @ version v3 . 0
*/
class AppServiceProvider extends ServiceProvider
{
/**
* Custom email array validation
*
* @ author [ A . Gianotto ] [ < snipe @ snipe . net > ]
* @ since [ v3 . 0 ]
* @ return void
*/
2021-04-05 21:56:25 -07:00
public function boot ( UrlGenerator $url )
2016-03-25 01:18:05 -07:00
{
2021-04-05 21:56:25 -07:00
if ( env ( 'APP_FORCE_TLS' )) {
if ( strpos ( env ( 'APP_URL' ), 'https' ) === 0 ) {
$url -> forceScheme ( 'https' );
} else {
2022-07-05 17:58:45 -07:00
\Log :: debug ( " 'APP_FORCE_TLS' is set to true, but 'APP_URL' does not start with 'https://'. Will not force TLS on connections. " );
2021-04-05 21:56:25 -07:00
}
}
2021-06-11 14:07:50 -07:00
2022-01-18 15:31:30 -08:00
// TODO - isn't it somehow 'gauche' to check the environment directly; shouldn't we be using config() somehow?
if ( ! env ( 'APP_ALLOW_INSECURE_HOSTS' )) { // unless you set APP_ALLOW_INSECURE_HOSTS, you should PROHIBIT forging domain parts of URL via Host: headers
$url_parts = parse_url ( config ( 'app.url' ));
2022-02-07 11:26:54 -08:00
if ( $url_parts && array_key_exists ( 'scheme' , $url_parts ) && array_key_exists ( 'host' , $url_parts )) { // check for the *required* parts of a bare-minimum URL
\URL :: forceRootUrl ( config ( 'app.url' ));
2022-01-27 11:21:46 -08:00
} else {
\Log :: error ( " Your APP_URL in your .env is misconfigured - it is: " . config ( 'app.url' ) . " . Many things will work strangely unless you fix it. " );
}
2022-01-18 15:31:30 -08:00
}
2021-06-11 14:07:50 -07:00
\Illuminate\Pagination\Paginator :: useBootstrap ();
2017-02-17 18:26:53 -08:00
Schema :: defaultStringLength ( 191 );
2017-06-15 20:54:14 -07:00
Asset :: observe ( AssetObserver :: class );
2023-11-22 12:22:05 -08:00
User :: observe ( UserObserver :: class );
2017-06-15 20:54:14 -07:00
Accessory :: observe ( AccessoryObserver :: class );
Component :: observe ( ComponentObserver :: class );
Consumable :: observe ( ConsumableObserver :: class );
License :: observe ( LicenseObserver :: class );
2019-03-13 10:58:35 -07:00
Setting :: observe ( SettingObserver :: class );
2016-03-25 01:18:05 -07:00
}
/**
* Register any application services .
*
* @ return void
*/
public function register ()
{
2021-11-30 20:09:29 -08:00
// Only load rollbar if there is a rollbar key and the app is in production
2021-06-10 13:15:52 -07:00
if (( $this -> app -> environment ( 'production' )) && ( config ( 'logging.channels.rollbar.access_token' ))) {
2017-11-06 20:04:50 -08:00
$this -> app -> register ( \Rollbar\Laravel\RollbarServiceProvider :: class );
2023-08-30 16:43:18 -07:00
}
2022-03-04 14:00:00 -08:00
$this -> app -> singleton ( 'ArieTimmerman\Laravel\SCIMServer\SCIMConfig' , SnipeSCIMConfig :: class ); // this overrides the default SCIM configuration with our own
2021-11-30 20:09:29 -08:00
2016-03-25 01:18:05 -07:00
}
}