Password::min(8)); // Custom guards Auth::extend('api-token', function ($app, $name, array $config) { return new ApiTokenGuard($app['request'], $app->make(LoginService::class)); }); Auth::extend('ldap-session', function ($app, $name, array $config) { $provider = Auth::createUserProvider($config['provider']); return new LdapSessionGuard( $name, $provider, $app['session.store'], $app[LdapService::class], $app[RegistrationService::class] ); }); Auth::extend('async-external-session', function ($app, $name, array $config) { $provider = Auth::createUserProvider($config['provider']); return new AsyncExternalBaseSessionGuard( $name, $provider, $app['session.store'], $app[RegistrationService::class] ); }); } /** * Register the application services. */ public function register(): void { Auth::provider('external-users', function ($app, array $config) { return new ExternalBaseUserProvider($config['model']); }); // Bind and provide the default system user as a singleton to the app instance when needed. // This effectively "caches" fetching the user at an app-instance level. $this->app->singleton('users.default', function () { return User::query()->where('system_name', '=', 'public')->first(); }); } }