Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
6 / 6 |
CRAP | |
100.00% |
21 / 21 |
Auth | |
100.00% |
1 / 1 |
|
100.00% |
6 / 6 |
10 | |
100.00% |
21 / 21 |
createToken | |
100.00% |
1 / 1 |
3 | |
100.00% |
8 / 8 |
|||
ttl | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
check | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
delete | |
100.00% |
1 / 1 |
2 | |
100.00% |
6 / 6 |
|||
redisKey | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
generate | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
1 | <?php |
2 | |
3 | |
4 | namespace Qmp\Laravel\ExternalUsers\Services\Auth; |
5 | |
6 | |
7 | use Illuminate\Support\Facades\Redis; |
8 | use Illuminate\Support\Str; |
9 | use Qmp\Laravel\ExternalUsers\Models\User; |
10 | |
11 | class Auth |
12 | { |
13 | const TOKEN_TTL = 86400; // 24h in sec |
14 | |
15 | public static function createToken(User $user) |
16 | { |
17 | if ($user->api_token && Redis::get(self::redisKey($user->api_token))) { |
18 | $token = $user->api_token; |
19 | } else { |
20 | $token = self::generate(); |
21 | Redis::set(self::redisKey($token), $user->id); |
22 | $user->api_token = $token; |
23 | $user->save(); |
24 | } |
25 | Redis::expire(self::redisKey($token), self::TOKEN_TTL); |
26 | |
27 | return $token; |
28 | } |
29 | |
30 | public static function ttl($token) |
31 | { |
32 | return Redis::ttl(self::redisKey($token)); |
33 | } |
34 | |
35 | public static function check($token) |
36 | { |
37 | $userId = Redis::get(self::redisKey($token)); |
38 | if (!$userId) { |
39 | return null; |
40 | } |
41 | |
42 | return User::findOrfail($userId); |
43 | } |
44 | |
45 | public static function delete($token) |
46 | { |
47 | $user = self::check($token); |
48 | if ($user) { |
49 | $user->api_token = null; |
50 | $user->save(); |
51 | Redis::del(self::redisKey($token)); |
52 | } |
53 | } |
54 | |
55 | protected static function redisKey($token) |
56 | { |
57 | return 'external_user:auth:' . $token; |
58 | } |
59 | |
60 | protected static function generate() |
61 | { |
62 | return Str::random(64); |
63 | } |
64 | } |