-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathToken.php
83 lines (71 loc) · 2.05 KB
/
Token.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
namespace Kauth\Token;
/**
* @author @code4mk <[email protected]>
* @author @0devco <[email protected]>
* @since 2019
* @copyright 0dev.co (https://0dev.co)
*/
use \Firebase\JWT\JWT;
use Illuminate\Http\Request;
use DateTime;
use DateInterval;
use Config;
use Cookie;
class Token
{
public function create($tokenID,$userType){
$issueDate = new DateTime();
$expiredDate = new DateTime();
$tokenDuration = Config::get('kauth.token_exp') ? Config::get('kauth.token_exp') : 'P32D';
$jwtIss = Config::get('kauth.payload.iss') ? Config::get('kauth.payload.iss') : 'https://code4mk.org';
$jwtAud = Config::get('kauth.payload.aud') ? Config::get('kauth.payload.aud') : 'https://code4mk.org';
$expiredDate->add(new DateInterval($tokenDuration));
$key = "example_key";
$token = array(
"iss" => $jwtIss,
"ut" => $userType,
"iat" => $issueDate->getTimestamp(),
"expM" => $expiredDate->getTimestamp(),
"tid" => $tokenID,
);
$jwt = JWT::encode($token,$key);
return $jwt;
}
public function tokon(){
$token_header = Config::get('kauth.token_header_name') ? Config::get('kauth.token_header_name') : 'tokon';
$tokon = \Request::header($token_header);
if($tokon === null && (Config::get('kauth.cookie_auth')) ){
try {
return $_COOKIE['kauth_token'];
} catch (\Exception $e) {
return $e;
}
}
return $tokon;
}
public function payload(){
$key = "example_key";
$tokon = $this->tokon();
$jwt = JWT::decode($tokon, $key, array('HS256'));
$payload = (array) $jwt;
return $payload;
}
public function payloader($tokon){
$key = "example_key";
$jwt = JWT::decode($tokon, $key, array('HS256'));
$payload = (array) $jwt;
return $payload;
}
public function isExpired(){
try {
$instanceTime = new DateTime();
if($instanceTime->getTimestamp() > $this->payload()["expM"] ){
return true;
}
return false;
} catch (\Exception $e) {
return "jwt token is error";
}
}
}