diff --git a/app/Http/Controllers/Auth/AuthController.php b/app/Http/Controllers/Auth/AuthController.php index 974778a9c8..b10ce7cdd9 100644 --- a/app/Http/Controllers/Auth/AuthController.php +++ b/app/Http/Controllers/Auth/AuthController.php @@ -6,7 +6,7 @@ namespace FireflyIII\Http\Controllers\Auth; use Auth; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Http\Controllers\Controller; -use FireflyIII\Models\Role; +use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\User; use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers; use Illuminate\Foundation\Auth\ThrottlesLogins; @@ -94,13 +94,14 @@ class AuthController extends Controller /** * Handle a registration request for the application. * + * @param UserRepositoryInterface $repository * @param \Illuminate\Http\Request $request * * @return \Illuminate\Http\Response * @throws FireflyException * @throws \Illuminate\Foundation\Validation\ValidationException */ - public function register(Request $request) + public function register(UserRepositoryInterface $repository, Request $request) { $validator = $this->validator($request->all()); @@ -146,12 +147,10 @@ class AuthController extends Controller Session::flash('gaEventAction', 'new-registration'); // first user ever? - if (User::count() == 1) { - $admin = Role::where('name', 'owner')->first(); - Auth::user()->attachRole($admin); + if ($repository->count() == 1) { + $repository->attachRole(Auth::user(), 'owner'); } - return redirect($this->redirectPath()); } throw new FireflyException('The authenticated user object is invalid.'); diff --git a/app/Providers/FireflyServiceProvider.php b/app/Providers/FireflyServiceProvider.php index b70a7a7480..a2bd38a2e9 100644 --- a/app/Providers/FireflyServiceProvider.php +++ b/app/Providers/FireflyServiceProvider.php @@ -86,6 +86,7 @@ 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\Support\Search\SearchInterface', 'FireflyIII\Support\Search\Search'); + $this->app->bind('FireflyIII\Repositories\User\UserRepositoryInterface', 'FireflyIII\Repositories\User\UserRepository'); // CSV import $this->app->bind('FireflyIII\Helpers\Csv\WizardInterface', 'FireflyIII\Helpers\Csv\Wizard'); diff --git a/app/Repositories/User/UserRepository.php b/app/Repositories/User/UserRepository.php new file mode 100644 index 0000000000..8294ace9c4 --- /dev/null +++ b/app/Repositories/User/UserRepository.php @@ -0,0 +1,45 @@ +first(); + $user->attachRole($admin); + + return true; + } + + /** + * @return int + */ + public function count(): int + { + return User::count(); + } +} \ No newline at end of file diff --git a/app/Repositories/User/UserRepositoryInterface.php b/app/Repositories/User/UserRepositoryInterface.php new file mode 100644 index 0000000000..f2859377c2 --- /dev/null +++ b/app/Repositories/User/UserRepositoryInterface.php @@ -0,0 +1,34 @@ +