From 33e29e2a7cfd469bc64cc9c9374580111571cbaa Mon Sep 17 00:00:00 2001 From: DariusIII Date: Wed, 8 May 2019 14:57:09 +0200 Subject: [PATCH] Fix adding user from admin area (fixes issue #972) --- Changelog | 1 + app/Http/Controllers/Admin/UserController.php | 6 ++-- app/Models/User.php | 29 ++++++++++--------- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/Changelog b/Changelog index 551e5d535..e73e8b274 100755 --- a/Changelog +++ b/Changelog @@ -1,4 +1,5 @@ 2019-05-08 DariusIII + * Fix: Fix adding user from admin area (fixes issue #972) * Chg: Update profile deletion behaviour 2019-05-07 DariusIII * Chg: Fix code style of many files diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 92c39e79c..c1c75d9b7 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -75,8 +75,8 @@ class UserController extends BasePageController } /** - * @param \Illuminate\Http\Request $request - * + * @param Request $request + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector * @throws \Exception */ public function edit(Request $request) @@ -134,7 +134,7 @@ class UserController extends BasePageController $invites = $role['defaultinvites']; } } - $ret = User::signUp($request->input('username'), $request->input('password'), $request->input('email'), '', $request->input('notes'), $invites, '', true, $request->input('role')); + $ret = User::signUp($request->input('username'), $request->input('password'), $request->input('email'), '', $request->input('notes'), $invites, '', true, $request->input('role'), false); $this->smarty->assign('role', $request->input('role')); } else { $editedUser = User::find($request->input('id')); diff --git a/app/Models/User.php b/app/Models/User.php index 80cda151c..3c98e9c78 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -667,17 +667,17 @@ class User extends Authenticatable * @param $password * @param $email * @param $host - * @param int $role * @param $notes - * @param int $invites + * @param int $invites * @param string $inviteCode - * @param bool $forceInviteMode + * @param bool $forceInviteMode * + * @param int $role + * @param bool $validate * @return bool|int * @throws \Exception - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException */ - public static function signUp($userName, $password, $email, $host, $notes, $invites = Invitation::DEFAULT_INVITES, $inviteCode = '', $forceInviteMode = false, $role = self::ROLE_USER) + public static function signUp($userName, $password, $email, $host, $notes, $invites = Invitation::DEFAULT_INVITES, $inviteCode = '', $forceInviteMode = false, $role = self::ROLE_USER, $validate = true) { $user = [ 'username' => trim($userName), @@ -685,14 +685,17 @@ class User extends Authenticatable 'email' => trim($email), ]; - $validator = Validator::make($user, [ - 'username' => ['required', 'string', 'min:5', 'max:255', 'unique:users'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users', 'indisposable'], - 'password' => ['required', 'string', 'min:8', 'confirmed', 'regex:/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/'], - ]); + if ($validate) { + $validator = Validator::make($user, [ + 'username' => ['required', 'string', 'min:5', 'max:255', 'unique:users'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users', 'indisposable'], + 'password' => ['required', 'string', 'min:8', 'confirmed', 'regex:/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/'], + ]); - if ($validator->fails()) { - (new ColorCLI())->error(implode('', Arr::collapse($validator->errors()->toArray()))); + if ($validator->fails()) { + $error = implode('', Arr::collapse($validator->errors()->toArray())); + return $error; + } } // Make sure this is the last check, as if a further validation check failed, the invite would still have been used up. @@ -708,7 +711,7 @@ class User extends Authenticatable } } - return self::add($user['userName'], $user['password'], $user['email'], $role, $notes, $host, $invites, $invitedBy); + return self::add($user['username'], $user['password'], $user['email'], $role, $notes, $host, $invites, $invitedBy); } /**