diff --git a/app/Providers/FireflyServiceProvider.php b/app/Providers/FireflyServiceProvider.php index 7bdd87aca8..6219f09ed8 100644 --- a/app/Providers/FireflyServiceProvider.php +++ b/app/Providers/FireflyServiceProvider.php @@ -86,7 +86,6 @@ class FireflyServiceProvider extends ServiceProvider $this->app->bind('FireflyIII\Repositories\Category\SingleCategoryRepositoryInterface', 'FireflyIII\Repositories\Category\SingleCategoryRepository'); $this->app->bind('FireflyIII\Repositories\Currency\CurrencyRepositoryInterface', 'FireflyIII\Repositories\Currency\CurrencyRepository'); $this->app->bind('FireflyIII\Repositories\Tag\TagRepositoryInterface', 'FireflyIII\Repositories\Tag\TagRepository'); - $this->app->bind('FireflyIII\Repositories\Rule\RuleRepositoryInterface', 'FireflyIII\Repositories\Rule\RuleRepository'); $this->app->bind('FireflyIII\Support\Search\SearchInterface', 'FireflyIII\Support\Search\Search'); // CSV import diff --git a/app/Providers/RuleServiceProvider.php b/app/Providers/RuleServiceProvider.php new file mode 100644 index 0000000000..c3480920f1 --- /dev/null +++ b/app/Providers/RuleServiceProvider.php @@ -0,0 +1,49 @@ +app->bind( + 'FireflyIII\Repositories\Rule\RuleRepositoryInterface', + function (Application $app, array $arguments) { + if (!isset($arguments[0]) && Auth::check()) { + return app('FireflyIII\Repositories\Rule\RuleRepository', [Auth::user()]); + } else { + if (!isset($arguments[0]) && !Auth::check()) { + throw new FireflyException('There is no user present.'); + } + } + + return app('FireflyIII\Repositories\Rule\RuleRepository', $arguments); + } + ); + } +} diff --git a/app/Repositories/Rule/RuleRepository.php b/app/Repositories/Rule/RuleRepository.php index 1e6fb9ad69..5f2677e5f3 100644 --- a/app/Repositories/Rule/RuleRepository.php +++ b/app/Repositories/Rule/RuleRepository.php @@ -10,12 +10,13 @@ declare(strict_types = 1); namespace FireflyIII\Repositories\Rule; -use Auth; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Models\Rule; use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleGroup; use FireflyIII\Models\RuleTrigger; +use FireflyIII\User; +use Log; /** * Class RuleRepository @@ -24,13 +25,26 @@ use FireflyIII\Models\RuleTrigger; */ class RuleRepository implements RuleRepositoryInterface { + /** @var User */ + private $user; + + /** + * BillRepository constructor. + * + * @param User $user + */ + public function __construct(User $user) + { + Log::debug('Constructed rule repository for user #' . $user->id . ' (' . $user->email . ')'); + $this->user = $user; + } /** * @return int */ public function count() { - return Auth::user()->rules()->count(); + return $this->user->rules()->count(); } /** @@ -56,7 +70,7 @@ class RuleRepository implements RuleRepositoryInterface */ public function getFirstRuleGroup() { - return Auth::user()->ruleGroups()->first(); + return $this->user->ruleGroups()->first(); } /** @@ -205,7 +219,7 @@ class RuleRepository implements RuleRepositoryInterface public function store(array $data) { /** @var RuleGroup $ruleGroup */ - $ruleGroup = Auth::user()->ruleGroups()->find($data['rule_group_id']); + $ruleGroup = $this->user->ruleGroups()->find($data['rule_group_id']); // get max order: $order = $this->getHighestOrderInRuleGroup($ruleGroup);