Completed
Push — master ( e3ab92...3aa844 )
by Travis
02:51
created

Social::updateFromProvider()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 19
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 19
rs 9.4285
cc 3
eloc 14
nc 4
nop 2
1
<?php
2
3
namespace NukaCode\Users\Models\User;
4
5
use App\Models\BaseModel;
6
7
class Social extends BaseModel
8
{
9
    protected $table = 'user_socials';
10
11
    protected $fillable = [
12
        'user_id',
13
        'provider',
14
        'social_id',
15
        'email',
16
        'avatar',
17
        'token',
18
        'refresh_token',
19
        'expires_in'
20
    ];
21
22
    public function updateFromProvider(AbstractUser $socialUser, $provider)
23
    {
24
        $refreshToken = isset($socialUser->refreshToken) && $socialUser->refreshToken
25
            ? $socialUser->refreshToken
26
            : null;
27
28
        $attributes = [
29
            'user_id'       => $this->id,
30
            'provider'      => $provider,
31
            'social_id'     => $socialUser->getId(),
32
            'email'         => $socialUser->getEmail(),
33
            'avatar'        => $socialUser->getAvatar(),
34
            'token'         => $socialUser->token,
35
            'refresh_token' => $refreshToken,
36
            'expires_in'    => $socialUser->expiresIn,
37
        ];
38
39
        $this->updateOrCreate(array_only($attributes, ['user_id', 'provider', 'email']), $attributes);
40
    }
41
42
    public function user()
43
    {
44
        return $this->belongsTo(config('auth.providers.users.model'), 'user_id');
45
    }
46
}
47