Completed
Push — master ( 4f3de5...9b9e7a )
by Pavel
05:51
created

RefreshToken::getUserByRefreshToken()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 6
nc 2
nop 1
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
1
<?php
2
namespace App\Model;
3
4
use App\Common\Helper;
5
6
/**
7
 * Class RefreshToken
8
 *
9
 * @property integer        $id
10
 * @property string         $refresh_token
11
 * @property integer        $user_id
12
 * @property \Carbon\Carbon $created_at
13
 *
14
 * @package App\Model
15
 */
16
final class RefreshToken extends BaseModel
17
{
18
    protected $table = 'refresh_tokens';
19
20
    protected $fillable = [
21
        'refresh_token',
22
        'user_id',
23
    ];
24
25
    public $timestamps = false;
26
27
    public function user(){
28
        return $this->belongsTo('App\Model\User');
29
    }
30
31
    /**
32
     * @param string $refreshToken
33
     *
34
     * @return User|null
35
     */
36
    public static function getUserByRefreshToken($refreshToken)
37
    {
38
        $user         = null;
39
        $refreshToken = self::where('refresh_token', $refreshToken)->first();
40
41
        if ($refreshToken) {
42
            $user = $refreshToken->user;
43
        }
44
45
        return $user;
46
    }
47
48
    /**
49
     * @param User $user
50
     *
51
     * @return string
52
     */
53
    public static function createRefreshToken(User $user)
54
    {
55
        $refreshToken = md5(Helper::generateRandomString() . '_' . time());
56
57
        $user->refresh_tokens()->create([
58
            'refresh_token' => $refreshToken,
59
            'created_at'    => date('Y-m-d H:i:s'),
60
        ]);
61
62
        return $refreshToken;
63
    }
64
}
65