137 lines
4.2 KiB
PHP
Executable File
137 lines
4.2 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Helpers;
|
|
|
|
|
|
use Firebase\JWT\JWT;
|
|
use Firebase\JWT\Key;
|
|
use Firebase\JWT\ExpiredException;
|
|
use Firebase\JWT\BeforeValidException;
|
|
use Firebase\JWT\SignatureInvalidException;
|
|
// use Psr\Http\Message\RequestInterface;
|
|
use CodeIgniter\HTTP\RequestInterface;
|
|
use ReflectionClass;
|
|
|
|
use App\Models\EmployeeModel;
|
|
use App\Models\LevelContactModel;
|
|
|
|
|
|
class JWTToken
|
|
{
|
|
public static function encode($data =null)
|
|
{
|
|
$secret_Key ="secret";
|
|
|
|
$request_data = (array)$data;
|
|
|
|
try{
|
|
$token = JWT::encode($request_data ,$secret_Key,'HS512');
|
|
$id = $request_data['id'];
|
|
$data["token_time_out"] = time() + getenv('TOKENTIMEOUT');
|
|
|
|
if(isset($data['emp_code'])){
|
|
$model = new EmployeeModel();
|
|
$model->update($id, $data);
|
|
|
|
}else{
|
|
$models = new LevelContactModel();
|
|
$models->update($id, $data);
|
|
|
|
}
|
|
|
|
|
|
return $token;
|
|
}
|
|
catch (Exception $e) {
|
|
return ['status' => false,'message' => $e->getMessage()];
|
|
}
|
|
}
|
|
|
|
public static function validateJWT($jwt)
|
|
{
|
|
$jwtParts = explode(' ', $jwt);
|
|
|
|
// print_r($jwtParts);
|
|
if (count($jwtParts) != 2 || $jwtParts[0] == 'Bearer') {
|
|
return false;
|
|
}
|
|
|
|
$token = $jwtParts[1];
|
|
|
|
try {
|
|
$decoded = JWT::decode($token, new Key("secret", 'HS512'));
|
|
return json_encode(['status' => true, 'message' => 'Token is valid', 'decoded' => (array) $decoded]);
|
|
} catch (ExpiredException $e) {
|
|
return json_encode(['status' => false, 'message' => 'Token has expired']);
|
|
} catch (BeforeValidException $e) {
|
|
return json_encode(['status' => false, 'message' => 'Token is not yet valid']);
|
|
} catch (SignatureInvalidException $e) {
|
|
return json_encode(['status' => false, 'message' => 'Token signature is invalid']);
|
|
} catch (\Exception $e) {
|
|
return json_encode(['status' => false, 'message' => 'An error occurred while decoding the token']);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static function getIdFromToken($jwt)
|
|
{
|
|
|
|
$jwtParts = explode(' ', $jwt);
|
|
|
|
$token = $jwtParts[0];
|
|
|
|
try {
|
|
$decoded = JWT::decode($token, new Key("secret", 'HS512'));
|
|
return json_encode(['status' => true, 'message' => 'Token is valid', 'data' =>$decoded->data->id ]);
|
|
} catch (ExpiredException $e) {
|
|
return json_encode(['status' => false, 'message' => 'Token has expired']);
|
|
} catch (BeforeValidException $e) {
|
|
return json_encode(['status' => false, 'message' => 'Token is not yet valid']);
|
|
} catch (SignatureInvalidException $e) {
|
|
return json_encode(['status' => false, 'message' => 'Token signature is invalid']);
|
|
} catch (\Exception $e) {
|
|
return json_encode(['status' => false, 'message' => 'An error occurred while decoding the token']);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public static function getUserIdFromToken()
|
|
{
|
|
$request = \Config\Services::request();
|
|
$jwt = $request->getHeader('Authorization');
|
|
$jwtParts = explode(' ', $jwt);
|
|
$token = $jwtParts[1];
|
|
|
|
$decoded = JWT::decode($token, new Key("secret", 'HS512'));
|
|
return $decoded->id;
|
|
}
|
|
|
|
public static function getUserRoleFromToken()
|
|
{
|
|
$request = \Config\Services::request();
|
|
$jwt = $request->getHeader('Authorization');
|
|
$jwtParts = explode(' ', $jwt);
|
|
$token = $jwtParts[1];
|
|
|
|
$decoded = JWT::decode($token, new Key("secret", 'HS512'));
|
|
return $decoded->role;
|
|
}
|
|
|
|
|
|
public static function decodeToken()
|
|
{
|
|
$request = \Config\Services::request();
|
|
$jwt = $request->getHeader('Authorization');
|
|
$jwtParts = explode(' ', $jwt);
|
|
$token = $jwtParts[1];
|
|
|
|
$decoded = JWT::decode($token, new Key("secret", 'HS512'));
|
|
return $decoded;
|
|
}
|
|
|
|
}
|
|
|