RefreshToken::getUserByToken()   A
last analyzed

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