Skip to content

Instantly share code, notes, and snippets.

@vigikaran
Created October 23, 2020 10:16
Show Gist options
  • Save vigikaran/b0fcdeaca72e3f07aa74c589c6f49a1d to your computer and use it in GitHub Desktop.
Save vigikaran/b0fcdeaca72e3f07aa74c589c6f49a1d to your computer and use it in GitHub Desktop.
<?php
namespace App\Http\Middleware;
use Closure;
use \Firebase\JWT\JWT;
class ClientTokenAbility
{
protected $prefix = 'bearer';
protected $header = 'authorization';
public function handle($request, Closure $next){
$token = $this->getToken($request);
if($token)
{
try {
$secretKey = config('jwt.key');
$token_data = JWT::decode($token, $secretKey, ['HS512']);
// Adding Decoded data to the Request parameters
$request->request->add(['user_data' => $token_data->data]);
return $next($request);
} catch (\Firebase\JWT\ExpiredException $e) {
return response([
'result'=>false,
'error' =>'Token Expired'
],401);
}catch(\Exception $e)
{
return response([
'result'=>false,
'error' =>'Token Invalid'
],401);
}
catch(Exception $e)
{
return response([
'result'=>false,
'error' =>'Internal Error. Please Try again'
],401);
}
return response([$token]);
}
else
{
return response([
'result'=>false,
'error' =>'Token Empty'
],400);
}
return $next($request);
}
private function getToken($request){
if($request->headers->get($this->header))
$header = $request->headers->get($this->header);
else
$header = $request->server->get('HTTP_AUTHORIZATION') ?: $request->server->get('REDIRECT_HTTP_AUTHORIZATION');
if ($header && stripos($header, $this->prefix) === 0)
return trim(str_ireplace($this->prefix, '', $header));
else
return null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment