diff --git a/app/Users/Controllers/UserApiController.php b/app/Users/Controllers/UserApiController.php index 6ee8f16d1..c84f1531d 100644 --- a/app/Users/Controllers/UserApiController.php +++ b/app/Users/Controllers/UserApiController.php @@ -37,7 +37,7 @@ class UserApiController extends ApiController { return [ 'create' => [ - 'name' => ['required', 'string', 'min:2', 'max:100'], + 'name' => ['required', 'string', 'min:1', 'max:100'], 'email' => [ 'required', 'string', 'email', 'min:2', new Unique('users', 'email'), ], @@ -49,7 +49,7 @@ class UserApiController extends ApiController 'send_invite' => ['boolean'], ], 'update' => [ - 'name' => ['string', 'min:2', 'max:100'], + 'name' => ['string', 'min:1', 'max:100'], 'email' => [ 'string', 'email', diff --git a/app/Users/Controllers/UserController.php b/app/Users/Controllers/UserController.php index b5dbaa832..c6e4326e9 100644 --- a/app/Users/Controllers/UserController.php +++ b/app/Users/Controllers/UserController.php @@ -144,7 +144,7 @@ class UserController extends Controller $this->checkPermission('users-manage'); $validated = $this->validate($request, [ - 'name' => ['min:2', 'max:100'], + 'name' => ['min:1', 'max:100'], 'email' => ['min:2', 'email', 'unique:users,email,' . $id], 'password' => ['required_with:password_confirm', Password::default()], 'password-confirm' => ['same:password', 'required_with:password'], diff --git a/tests/User/UserManagementTest.php b/tests/User/UserManagementTest.php index 8fe855afa..37d9b3835 100644 --- a/tests/User/UserManagementTest.php +++ b/tests/User/UserManagementTest.php @@ -11,7 +11,6 @@ use BookStack\Users\Models\User; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; use Mockery\MockInterface; -use RuntimeException; use Tests\TestCase; class UserManagementTest extends TestCase @@ -86,6 +85,16 @@ class UserManagementTest extends TestCase $this->assertTrue(Hash::check('newpassword', $userPassword)); } + public function test_user_can_be_updated_with_single_char_name() + { + $user = $this->users->viewer(); + $this->asAdmin()->put("/settings/users/{$user->id}", [ + 'name' => 'b' + ])->assertRedirect('/settings/users'); + + $this->assertEquals('b', $user->refresh()->name); + } + public function test_user_cannot_be_deleted_if_last_admin() { $adminRole = Role::getRole('admin');