diff --git a/app/Http/Controllers/AccountApiController.php b/app/Http/Controllers/AccountApiController.php index f93bf85461bb..bee5c09c7094 100644 --- a/app/Http/Controllers/AccountApiController.php +++ b/app/Http/Controllers/AccountApiController.php @@ -39,7 +39,7 @@ class AccountApiController extends BaseAPIController public function register(RegisterRequest $request) { - if (! \App\Models\LookupUser::validateEmail($request->email)) { + if (! \App\Models\LookupUser::validateField('email', $request->email)) { return $this->errorResponse(['message' => trans('texts.email_taken')], 500); } diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index ea4538dd84e4..62d9d8ff62be 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -1102,7 +1102,7 @@ class AccountController extends BaseController $user = Auth::user(); $email = trim(strtolower(Input::get('email'))); - if (! \App\Models\LookupUser::validateEmail($email, $user)) { + if (! \App\Models\LookupUser::validateField('email', $email, $user)) { return Redirect::to('settings/' . ACCOUNT_USER_DETAILS) ->withError(trans('texts.email_taken')) ->withInput(); @@ -1219,7 +1219,7 @@ class AccountController extends BaseController $email = trim(strtolower(Input::get('email'))); $user = Auth::user(); - if (! \App\Models\LookupUser::validateEmail($email, $user)) { + if (! \App\Models\LookupUser::validateField('email', $email, $user)) { return 'taken'; } @@ -1264,7 +1264,7 @@ class AccountController extends BaseController $email = trim(strtolower(Input::get('new_email'))); $password = trim(Input::get('new_password')); - if (! \App\Models\LookupUser::validateEmail($email, $user)) { + if (! \App\Models\LookupUser::validateField('email', $email, $user)) { return ''; } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 6cce8ec58fc1..dd7f96f23cf8 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -182,7 +182,7 @@ class UserController extends BaseController ->withInput(); } - if (! \App\Models\LookupUser::validateEmail(Input::get('email'), $user)) { + if (! \App\Models\LookupUser::validateField('email', Input::get('email'), $user)) { return Redirect::to($userPublicId ? 'users/edit' : 'users/create') ->withError(trans('texts.email_taken')) ->withInput(); diff --git a/app/Models/LookupUser.php b/app/Models/LookupUser.php index bf4b2e17e022..c1edd1231c17 100644 --- a/app/Models/LookupUser.php +++ b/app/Models/LookupUser.php @@ -47,7 +47,7 @@ class LookupUser extends LookupModel config(['database.default' => $current]); } - public static function validateEmail($email, $user = false) + public static function validateField($field, $value, $user = false) { if (! env('MULTI_DB_ENABLED')) { return true; @@ -58,7 +58,7 @@ class LookupUser extends LookupModel config(['database.default' => DB_NINJA_LOOKUP]); - $lookupUser = LookupUser::whereEmail($email)->first(); + $lookupUser = LookupUser::where($field, '=', $value)->first(); if ($user) { $lookupAccount = LookupAccount::whereAccountKey($accountKey)->firstOrFail(); diff --git a/app/Ninja/Repositories/AccountRepository.php b/app/Ninja/Repositories/AccountRepository.php index b7035a8fbe77..ebcf0cff5f70 100644 --- a/app/Ninja/Repositories/AccountRepository.php +++ b/app/Ninja/Repositories/AccountRepository.php @@ -16,6 +16,7 @@ use App\Models\InvoiceItem; use App\Models\Language; use App\Models\User; use App\Models\UserAccount; +use App\Models\LookupUser; use Auth; use Input; use Request; @@ -430,6 +431,10 @@ class AccountRepository public function updateUserFromOauth($user, $firstName, $lastName, $email, $providerId, $oauthUserId) { + if (! LookupUser::validateField('oauth_user_key', $providerId . '-' . $oauthUserId)) { + return trans('texts.oauth_taken'); + } + if (! $user->registered) { $rules = ['email' => 'email|required|unique:users,email,'.$user->id.',id']; $validator = Validator::make(['email' => $email], $rules); @@ -439,7 +444,7 @@ class AccountRepository return $messages->first('email'); } - if (! \App\Models\LookupUser::validateEmail($email, $user)) { + if (! LookupUser::validateField('email', $email, $user)) { return trans('texts.email_taken'); } diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 0e92e3cf5faf..4214fd57a5b5 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -2244,6 +2244,7 @@ $LANG = array( 'white_label_license_error' => 'Failed to validate the license, check storage/logs/laravel-error.log for more details.', 'plan_price' => 'Plan Price', 'wrong_confirmation' => 'Incorrect confirmation code', + 'oauth_taken' => 'The account is already registered', );