Completed
Push — master ( 9a366d...5cc45f )
by Pavel
17s
created

RefreshToken::user()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
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
    {
29
        return $this->belongsTo('App\Model\User');
30
    }
31
32
    /**
33
     * @param string $refreshToken
34
     *
35
     * @return User|null
36
     */
37
    public static function getUserByToken($refreshToken)
38
    {
39
        $user         = null;
40
        $refreshToken = self::where('refresh_token', $refreshToken)->first();
41
42
        if ($refreshToken) {
43
            $user = $refreshToken->user;
44
        }
45
46
        return $user;
47
    }
48
49
    /**
50
     * @param User $user
51
     *
52
     * @return string
53
     */
54
    public static function createToken(User $user)
55
    {
56
        $refreshToken = md5(Helper::generateRandomString().'_'.time());
57
58
        $user->refresh_tokens()->create([
59
            'refresh_token' => $refreshToken,
60
            'created_at'    => date('Y-m-d H:i:s'),
61
        ]);
62
63
        return $refreshToken;
64
    }
65
}
66