From c6be29306493b9362716971829be6d49dcb1d6e0 Mon Sep 17 00:00:00 2001 From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com> Date: Mon, 6 Jan 2025 16:24:53 +0100 Subject: [PATCH] refactor: AppServiceProvider - Remove unused authentik stuff - Move things to separate functions - Configure commands for production - Configure modals for better error handling - Improve password security by not allowing compromised passwords. - Rename some things to make it clearer. - Sort imports --- app/Providers/AppServiceProvider.php | 52 ++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 2ce94201c..3b15f1ee1 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -3,37 +3,67 @@ namespace App\Providers; use App\Models\PersonalAccessToken; -use Illuminate\Support\Facades\Event; +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 ($this->app->environment('local')) { - $this->app->register(\Laravel\Telescope\TelescopeServiceProvider::class); + if (App::isLocal()) { + $this->app->register(TelescopeServiceProvider::class); } } public function boot(): void { - Event::listen(function (\SocialiteProviders\Manager\SocialiteWasCalled $event) { - $event->extendSocialite('authentik', \SocialiteProviders\Authentik\Provider::class); - }); - Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class); + $this->configureCommands(); + $this->configureModels(); + $this->configurePasswords(); + $this->configureSanctumModel(); + $this->configureGitHubHttp(); + } + private function configureCommands(): void + { + if (App::isProduction()) { + DB::prohibitDestructiveCommands(); + } + } + + private function configureModels(): void + { + Model::shouldBeStrict(); + } + + private function configurePasswords(): void + { Password::defaults(function () { - $rule = Password::min(8); + $rule = Password::min(8)->letters(); - return $this->app->isProduction() - ? $rule->mixedCase()->letters()->numbers()->symbols() + return App::isProduction() + ? $rule->mixedCase() + ->numbers() + ->symbols() + ->uncompromised() : $rule; }); + } - Http::macro('github', function (string $api_url, ?string $github_access_token = null) { + 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',