diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 476caac06b45..3041b1e3fd80 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -404,6 +404,36 @@ class LoginController extends BaseController if ($user) { + //check the user doesn't already exist in some form + + if($existing_login_user = MultiDB::hasUser(['email' => $google->harvestEmail($user)])) + { + Auth::login($existing_login_user, true); + $existing_login_user->setCompany($existing_login_user->account->default_company); + + $this->setLoginCache($existing_login_user); + + auth()->user()->update([ + 'oauth_user_id' => $google->harvestSubField($user), + 'oauth_provider_id'=> 'google', + ]); + + $cu = CompanyUser::query() + ->where('user_id', auth()->user()->id); + + $cu->first()->account->companies->each(function ($company) use($cu){ + + if($company->tokens()->where('is_system', true)->count() == 0) + { + CreateCompanyToken::dispatchNow($company, $cu->first()->user, request()->server('HTTP_USER_AGENT')); + } + }); + + return $this->timeConstrainedResponse($cu); + } + + + //user not found anywhere - lets sign them up. $name = OAuth::splitName($google->harvestName($user)); $new_account = [ diff --git a/app/Http/Controllers/ConnectedAccountController.php b/app/Http/Controllers/ConnectedAccountController.php index 20fc66deeac0..1d9575c3409e 100644 --- a/app/Http/Controllers/ConnectedAccountController.php +++ b/app/Http/Controllers/ConnectedAccountController.php @@ -17,6 +17,7 @@ use App\Models\CompanyUser; use App\Models\User; use App\Transformers\CompanyUserTransformer; use App\Transformers\UserTransformer; +use App\Utils\Traits\User\LoginCache; use Google_Client; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; @@ -24,6 +25,7 @@ use Illuminate\Support\Str; class ConnectedAccountController extends BaseController { + use LoginCache; protected $entity_type = User::class; @@ -113,9 +115,8 @@ class ConnectedAccountController extends BaseController auth()->user()->email_verified_at = now(); auth()->user()->save(); - $timeout = auth()->user()->company()->default_password_timeout; - Cache::put(auth()->user()->hashed_id.'_'.auth()->user()->account_id.'_logged_in', Str::random(64), $timeout); - + $this->setLoginCache(auth()->user()); + return $this->itemResponse(auth()->user()); }