diff --git a/app/Http/Controllers/InstallationController.php b/app/Http/Controllers/InstallationController.php index 43781b0..7b7eddd 100755 --- a/app/Http/Controllers/InstallationController.php +++ b/app/Http/Controllers/InstallationController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Entities\Users\User; use App\Http\Requests\Accounts\RegisterRequest; use Auth; +use DB; /** * Installation Controller @@ -28,14 +29,6 @@ class InstallationController extends Controller public function postRegister(RegisterRequest $request) { - $adminData = $request->only('name', 'email', 'password'); - - $adminData['api_token'] = str_random(32); - - $admin = User::create($adminData); - - Auth::login($admin); - $agencyData = collect($request->only('agency_name', 'agency_website', 'email')) ->map(function ($value, $key) { return [ @@ -44,7 +37,19 @@ class InstallationController extends Controller ]; })->toArray(); - \DB::table('site_options')->insert($agencyData); + DB::beginTransaction(); + DB::table('site_options')->insert($agencyData); + + $adminData = $request->only('name', 'email', 'password'); + + $adminData['api_token'] = str_random(32); + + $admin = User::create($adminData); + $admin->assignRole('admin'); + $admin->assignRole('worker'); + + Auth::login($admin); + DB::commit(); flash()->success(trans('auth.welcome', ['name' => $admin->name])); return redirect()->route('home'); diff --git a/tests/Feature/Auth/InstallationTest.php b/tests/Feature/InstallationTest.php similarity index 88% rename from tests/Feature/Auth/InstallationTest.php rename to tests/Feature/InstallationTest.php index d3f4a3c..e5303a2 100644 --- a/tests/Feature/Auth/InstallationTest.php +++ b/tests/Feature/InstallationTest.php @@ -1,6 +1,6 @@ see(trans('auth.welcome', ['name' => 'Nama Admin'])); + $newAdmin = User::where('email', 'email@mail.com')->first(); + $this->assertEquals('Nama Admin', $newAdmin->name); + $this->assertTrue($newAdmin->hasRole('admin')); + $this->assertTrue($newAdmin->hasRole('worker')); + $this->seeInDatabase('users', [ 'name' => 'Nama Admin', 'email' => 'email@mail.com',