Completed
Push — master ( 451dc3...c3c1f8 )
by Travis
03:09
created

HasSocials::scopeGetProvider()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 2
1
<?php
2
3
namespace NukaCode\Users\Traits;
4
5
use Laravel\Socialite\AbstractUser;
6
use NukaCode\Users\Models\User\Social;
7
8
/**
9
 * Class HasSocials
10
 *
11
 * @package NukaCode\Users\Traits
12
 *
13
 * @method getProvider($provider)
14
 */
15
trait HasSocials
16
{
17
    public function addSocial(AbstractUser $socialUser, $provider)
18
    {
19
        $refreshToken = isset($socialUser->refresh_token) && $socialUser->refresh_token
20
            ? $socialUser->refresh_token
21
            : null;
22
23
        $this->socials()->create([
24
            'provider'      => $provider,
25
            'social_id'     => $socialUser->getId(),
26
            'avatar'        => $socialUser->getAvatar(),
27
            'token'         => $socialUser->token,
28
            'refresh_token' => $refreshToken,
29
        ]);
30
    }
31
32
    public function scopeGetProvider($query, $provider)
33
    {
34
        return $query->socials()->where('provider', $provider)->first();
35
    }
36
37
    public function hasProvider($provider)
38
    {
39
        return $this->socials()->where('provider', $provider)->count() > 0;
40
    }
41
42
    public function socials()
43
    {
44
        return $this->hasMany(Social::class, 'user_id');
45
    }
46
}
47