SocialAccountService::createOrGetUser()   B
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 29
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 29
rs 8.8571
cc 3
eloc 18
nc 3
nop 1
1
<?php
2
namespace App;
3
4
use Laravel\Socialite\Contracts\User as ProviderUser;
5
6
class SocialAccountService {
7
8
    public function createOrGetUser(ProviderUser $providerUser){
9
10
        $account = SocialAccount::whereProvider('facebook')
11
            ->whereProviderUserId($providerUser->getId())
12
            ->first();
13
14
        if ($account) {
15
            return $account->user;
16
        } else {
17
            $account = new  SocialAccount([
18
                'provider_user_id' => $providerUser->getId(),
19
                'provider' => 'facebook'
20
            ]);
21
22
            $user = User::whereEmail($providerUser->getEmail())->first();
23
24
            if (!$user) {
25
                $user = User::create([
26
                     'email' => $providerUser->getEmail(),
27
                    'name' => $providerUser->getName(),
28
                ]);
29
            }
30
        }
31
        $account->user()->associate($user);
32
        $account->save();
33
34
        return $user;
35
36
    }
37
}