83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Providers;
 | 
						|
 | 
						|
use App\Models\PersonalAccessToken;
 | 
						|
use Illuminate\Database\Eloquent\Model;
 | 
						|
use Illuminate\Support\Facades\App;
 | 
						|
use Illuminate\Support\Facades\DB;
 | 
						|
use Illuminate\Support\Facades\Http;
 | 
						|
use Illuminate\Support\ServiceProvider;
 | 
						|
use Illuminate\Validation\Rules\Password;
 | 
						|
use Laravel\Sanctum\Sanctum;
 | 
						|
use Laravel\Telescope\TelescopeServiceProvider;
 | 
						|
 | 
						|
class AppServiceProvider extends ServiceProvider
 | 
						|
{
 | 
						|
    public function register(): void
 | 
						|
    {
 | 
						|
        if (App::isLocal()) {
 | 
						|
            $this->app->register(TelescopeServiceProvider::class);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function boot(): void
 | 
						|
    {
 | 
						|
        $this->configureCommands();
 | 
						|
        $this->configureModels();
 | 
						|
        $this->configurePasswords();
 | 
						|
        $this->configureSanctumModel();
 | 
						|
        $this->configureGitHubHttp();
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    private function configureCommands(): void
 | 
						|
    {
 | 
						|
        if (App::isProduction()) {
 | 
						|
            DB::prohibitDestructiveCommands();
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    private function configureModels(): void
 | 
						|
    {
 | 
						|
        // Disabled because it's causing issues with the application
 | 
						|
        // Model::shouldBeStrict();
 | 
						|
    }
 | 
						|
 | 
						|
    private function configurePasswords(): void
 | 
						|
    {
 | 
						|
        Password::defaults(function () {
 | 
						|
            return App::isProduction()
 | 
						|
                ? Password::min(8)
 | 
						|
                    ->mixedCase()
 | 
						|
                    ->letters()
 | 
						|
                    ->numbers()
 | 
						|
                    ->symbols()
 | 
						|
                    ->uncompromised()
 | 
						|
                : Password::min(8)->letters();
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    private function configureSanctumModel(): void
 | 
						|
    {
 | 
						|
        Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class);
 | 
						|
    }
 | 
						|
 | 
						|
    private function configureGitHubHttp(): void
 | 
						|
    {
 | 
						|
        Http::macro('GitHub', function (string $api_url, ?string $github_access_token = null) {
 | 
						|
            if ($github_access_token) {
 | 
						|
                return Http::withHeaders([
 | 
						|
                    'X-GitHub-Api-Version' => '2022-11-28',
 | 
						|
                    'Accept' => 'application/vnd.github.v3+json',
 | 
						|
                    'Authorization' => "Bearer $github_access_token",
 | 
						|
                ])->baseUrl($api_url);
 | 
						|
            } else {
 | 
						|
                return Http::withHeaders([
 | 
						|
                    'Accept' => 'application/vnd.github.v3+json',
 | 
						|
                ])->baseUrl($api_url);
 | 
						|
            }
 | 
						|
        });
 | 
						|
    }
 | 
						|
}
 |