nhance/app/Helpers/JWTToken.php
2024-03-25 17:22:46 +05:30

129 lines
4.0 KiB
PHP

<?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;
class JWTToken
{
public static function encode($data =null)
{
$secret_Key="secret";
$iat = time();
$exp = $iat + 36000;
$request_data = [
"iat" => $iat,
"exp" => $exp,
];
if ($data !== null) {
$request_data = array_merge($request_data, (array)$data);
}
try{
$token = JWT::encode($request_data ,$secret_Key,'HS512');
return $token;
// return ['status' => true,'token' => $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;
}
}