AuthApiAction::performChecks()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 16
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 16
rs 9.4285
cc 3
eloc 8
nc 3
nop 0
1
<?php
2
3
4
namespace App\Actions\Base;
5
6
7
use App\Lib\Helpers\Config;
8
use App\Lib\Helpers\JwtHelper;
9
use App\Lib\Slime\Exceptions\Http\UnAuthorizedException;
10
use App\Lib\Slime\RestAction\ApiAction;
11
12
abstract class AuthApiAction extends ApiAction
13
{
14
    protected $userId;
15
16
    protected function performChecks()
17
    {
18
        $token = $this->request->getHeader(
19
            Config::get('app.authHeader')
20
        );
21
22
        if (empty($token)) {
23
            throw new UnAuthorizedException('Missing Header');
24
        }
25
26
        $this->userId = $this->extractTokenInfo(current($token));
27
28
        if (empty($this->userId)) {
29
            throw new UnAuthorizedException('Unauthorized');
30
        }
31
    }
32
33
    protected function extractTokenInfo($token)
34
    {
35
        $tokenPayload = JwtHelper::decode($token);
36
        if (empty($tokenPayload)) {
37
            throw new UnAuthorizedException('Invalid Token');
38
        }
39
40
        if ($tokenPayload['validUntil'] <= time()) {
41
            throw new UnAuthorizedException('Expired token');
42
        }
43
44
        return $tokenPayload['userId'];
45
46
    }
47
48
}