HasSocials   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 0
dl 0
loc 34
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A addSocial() 0 16 3
A getProvider() 0 4 1
A hasProvider() 0 4 1
A socials() 0 4 1
1
<?php
2
3
namespace NukaCode\Users\Traits;
4
5
use Laravel\Socialite\AbstractUser;
6
use NukaCode\Users\Models\User\Social;
7
8
trait HasSocials
9
{
10
    public function addSocial(AbstractUser $socialUser, $provider)
11
    {
12
        $refreshToken = isset($socialUser->refreshToken) && $socialUser->refreshToken
13
            ? $socialUser->refreshToken
14
            : null;
15
16
        $this->socials()->create([
17
            'provider'      => $provider,
18
            'social_id'     => $socialUser->getId(),
19
            'email'         => $socialUser->getEmail(),
20
            'avatar'        => $socialUser->getAvatar(),
21
            'token'         => $socialUser->token,
22
            'refresh_token' => $refreshToken,
23
            'expires_in'    => $socialUser->expiresIn,
24
        ]);
25
    }
26
27
    public function getProvider($provider)
28
    {
29
        return $this->socials()->where('provider', $provider)->first();
30
    }
31
32
    public function hasProvider($provider)
33
    {
34
        return $this->socials()->where('provider', $provider)->count() > 0;
35
    }
36
37
    public function socials()
38
    {
39
        return $this->hasMany(Social::class, 'user_id');
40
    }
41
}
42