. */ declare(strict_types=1); namespace FireflyIII\Providers; use FireflyIII\Repositories\Account\AccountRepository; use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountTasker; use FireflyIII\Repositories\Account\AccountTaskerInterface; use FireflyIII\Repositories\Account\OperationsRepository; use FireflyIII\Repositories\Account\OperationsRepositoryInterface; use Illuminate\Foundation\Application; use Illuminate\Support\ServiceProvider; /** * @codeCoverageIgnore * Class AccountServiceProvider. */ class AccountServiceProvider extends ServiceProvider { /** * Bootstrap the application services. */ public function boot(): void { } /** * Register the application services. */ public function register(): void { $this->registerRepository(); $this->registerTasker(); } /** * Register account repository */ private function registerRepository(): void { $this->app->bind( AccountRepositoryInterface::class, function (Application $app) { /** @var AccountRepositoryInterface $repository */ $repository = app(AccountRepository::class); if ($app->auth->check()) { $repository->setUser(auth()->user()); } return $repository; } ); $this->app->bind( OperationsRepositoryInterface::class, static function (Application $app) { /** @var OperationsRepository $repository */ $repository = app(OperationsRepository::class); if ($app->auth->check()) { $repository->setUser(auth()->user()); } return $repository; } ); } /** * Register the tasker. */ private function registerTasker(): void { $this->app->bind( AccountTaskerInterface::class, function (Application $app) { /** @var AccountTaskerInterface $tasker */ $tasker = app(AccountTasker::class); if ($app->auth->check()) { $tasker->setUser(auth()->user()); } return $tasker; } ); } }