mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Cleanup for login controller - ensure tokens are present when user oauths
This commit is contained in:
parent
afdd594748
commit
00e74c3d3d
@ -32,6 +32,7 @@ use Illuminate\Support\Facades\Cache;
|
||||
use Turbo124\Beacon\Facades\LightLogs;
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Jobs\Company\CreateCompanyToken;
|
||||
use Illuminate\Support\Facades\Response;
|
||||
use Laravel\Socialite\Facades\Socialite;
|
||||
use App\Http\Requests\Login\LoginRequest;
|
||||
use App\Libraries\OAuth\Providers\Google;
|
||||
@ -109,6 +110,7 @@ class LoginController extends BaseController
|
||||
->increment()
|
||||
->batch();
|
||||
|
||||
/** @var \App\Models\User $user */
|
||||
$user = $this->guard()->user();
|
||||
|
||||
//2FA
|
||||
@ -135,7 +137,8 @@ class LoginController extends BaseController
|
||||
$account->save();
|
||||
$user = $user->fresh();
|
||||
}
|
||||
|
||||
|
||||
/** @var \App\Models\CompanyUser $cu */
|
||||
$cu = $this->hydrateCompanyUser();
|
||||
|
||||
if ($cu->count() == 0) {
|
||||
@ -168,7 +171,7 @@ class LoginController extends BaseController
|
||||
* Refreshes the data feed with the current Company User.
|
||||
*
|
||||
* @param Request $request
|
||||
* @return CompanyUser Refresh Feed.
|
||||
* @return Response | JsonResponse.
|
||||
*/
|
||||
public function refresh(Request $request)
|
||||
{
|
||||
@ -271,6 +274,7 @@ class LoginController extends BaseController
|
||||
|
||||
Auth::login($existing_user, true);
|
||||
|
||||
/** @var \App\Models\CompanyUser $cu */
|
||||
$cu = $this->hydrateCompanyUser();
|
||||
|
||||
if ($cu->count() == 0) {
|
||||
@ -290,12 +294,16 @@ class LoginController extends BaseController
|
||||
}
|
||||
|
||||
Auth::login($existing_login_user, true);
|
||||
/** @var \App\Models\User $user */
|
||||
|
||||
auth()->user()->update([
|
||||
$user = auth()->user();
|
||||
|
||||
$user->update([
|
||||
'oauth_user_id' => $user->id,
|
||||
'oauth_provider_id' => $provider,
|
||||
]);
|
||||
|
||||
/** @var \App\Models\CompanyUser $cu */
|
||||
$cu = $this->hydrateCompanyUser();
|
||||
|
||||
if ($cu->count() == 0) {
|
||||
@ -333,9 +341,14 @@ class LoginController extends BaseController
|
||||
$account = (new CreateAccount($new_account, request()->getClientIp()))->handle();
|
||||
|
||||
Auth::login($account->default_company->owner(), true);
|
||||
auth()->user()->email_verified_at = now();
|
||||
auth()->user()->save();
|
||||
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
$user->email_verified_at = now();
|
||||
$user->save();
|
||||
|
||||
/** @var \App\Models\CompanyUser $cu */
|
||||
$cu = $this->hydrateCompanyUser();
|
||||
|
||||
if ($cu->count() == 0) {
|
||||
@ -363,26 +376,21 @@ class LoginController extends BaseController
|
||||
$set_company = $cu->first()->company;
|
||||
}
|
||||
|
||||
auth()->user()->setCompany($set_company);
|
||||
/** @var \App\Models\User $user */
|
||||
$user->setCompany($set_company);
|
||||
|
||||
$this->setLoginCache(auth()->user());
|
||||
$this->setLoginCache($user);
|
||||
|
||||
$truth = app()->make(TruthSource::class);
|
||||
$truth->setCompanyUser($cu->first());
|
||||
$truth->setUser(auth()->user());
|
||||
$truth->setUser($user);
|
||||
$truth->setCompany($set_company);
|
||||
|
||||
if ($cu->count() == 0) {
|
||||
return $cu;
|
||||
}
|
||||
|
||||
if (auth()->user()->company_users()->count() != auth()->user()->tokens()->distinct('company_id')->count()) {
|
||||
auth()->user()->companies->each(function ($company) {
|
||||
if (!CompanyToken::where('user_id', auth()->user()->id)->where('company_id', $company->id)->where('is_system', true)->exists()) {
|
||||
(new CreateCompanyToken($company, auth()->user(), 'Google_O_Auth'))->handle();
|
||||
}
|
||||
});
|
||||
}
|
||||
$cu->first()->account->companies->each(function ($company) use ($cu) {
|
||||
if ($company->tokens()->where('is_system', true)->count() == 0) {
|
||||
(new CreateCompanyToken($company, $cu->first()->user, request()->server('HTTP_USER_AGENT')))->handle();
|
||||
}
|
||||
});
|
||||
|
||||
$truth->setCompanyToken(CompanyToken::where('user_id', auth()->user()->id)->where('company_id', $set_company->id)->first());
|
||||
|
||||
@ -457,10 +465,17 @@ class LoginController extends BaseController
|
||||
return response()->json(['message' => 'Unable to authenticate this user'], 400);
|
||||
}
|
||||
|
||||
/**
|
||||
* send login response to oauthed users
|
||||
*
|
||||
* @param \App\Models\User $existing_user
|
||||
* @return Response | JsonResponse
|
||||
*/
|
||||
private function existingOauthUser($existing_user)
|
||||
{
|
||||
Auth::login($existing_user, true);
|
||||
|
||||
/** @var \App\Models\CompanyUser $cu */
|
||||
$cu = $this->hydrateCompanyUser();
|
||||
|
||||
if ($cu->count() == 0) {
|
||||
@ -476,11 +491,16 @@ class LoginController extends BaseController
|
||||
|
||||
private function existingLoginUser($oauth_user_id, $provider)
|
||||
{
|
||||
auth()->user()->update([
|
||||
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
$user->update([
|
||||
'oauth_user_id' => $oauth_user_id,
|
||||
'oauth_provider_id' => $provider,
|
||||
]);
|
||||
|
||||
/** @var \App\Models\CompanyUser $cu */
|
||||
$cu = $this->hydrateCompanyUser();
|
||||
|
||||
if ($cu->count() == 0) {
|
||||
@ -579,9 +599,14 @@ class LoginController extends BaseController
|
||||
}
|
||||
|
||||
Auth::login($account->default_company->owner(), true);
|
||||
auth()->user()->email_verified_at = now();
|
||||
auth()->user()->save();
|
||||
|
||||
/** @var \App\Models\User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
$user->email_verified_at = now();
|
||||
$user->save();
|
||||
|
||||
/** @var \App\Models\CompanyUser $cu */
|
||||
$cu = $this->hydrateCompanyUser();
|
||||
|
||||
if ($cu->count() == 0) {
|
||||
@ -694,8 +719,6 @@ class LoginController extends BaseController
|
||||
'email' => $socialite_user->getEmail(),
|
||||
'oauth_user_id' => $socialite_user->getId(),
|
||||
'oauth_provider_id' => $provider,
|
||||
// 'oauth_user_token' => $oauth_user_token,
|
||||
// 'oauth_user_refresh_token' => $socialite_user->accessTokenResponseBody['refresh_token'],
|
||||
'oauth_user_token_expiry' => $oauth_expiry,
|
||||
];
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user