diff --git a/resources/js/components/users/Wizard.vue b/resources/js/components/users/Wizard.vue index 99eacf0c77..8e8b6a0585 100644 --- a/resources/js/components/users/Wizard.vue +++ b/resources/js/components/users/Wizard.vue @@ -235,7 +235,7 @@ export default { data() { return { user: { - super: this.canCreateSupers, + super: false, roles: [], groups: [], }, diff --git a/tests/Feature/Users/StoreUserTest.php b/tests/Feature/Users/StoreUserTest.php index e227b9234b..143efd514d 100644 --- a/tests/Feature/Users/StoreUserTest.php +++ b/tests/Feature/Users/StoreUserTest.php @@ -35,6 +35,8 @@ public function it_creates_a_user() ->actingAsWithElevatedSession($me) ->store() ->assertOk(); + + $this->assertFalse(User::findByEmail('test@domain.com')->isSuper()); } #[Test] @@ -48,4 +50,32 @@ public function it_requires_an_elevated_session() ->store() ->assertElevatedSessionRequiredJsonResponse(); } + + #[Test] + public function super_users_can_create_a_super_user() + { + $this->setTestRoles(['test' => ['access cp', 'create users']]); + $me = tap(User::make()->email('admin@domain.com')->assignRole('test')->makeSuper())->save(); + + $this + ->actingAsWithElevatedSession($me) + ->store(['super' => true]) + ->assertOk(); + + $this->assertTrue(User::findByEmail('test@domain.com')->isSuper()); + } + + #[Test] + public function non_super_users_cannot_create_a_super_user() + { + $this->setTestRoles(['test' => ['access cp', 'create users']]); + $me = tap(User::make()->email('admin@domain.com')->assignRole('test'))->save(); + + $this + ->actingAsWithElevatedSession($me) + ->store(['super' => true]) + ->assertOk(); + + $this->assertFalse(User::findByEmail('test@domain.com')->isSuper()); + } }