Skip to content

Instantly share code, notes, and snippets.

@vigikaran
Last active June 12, 2020 11:35
Show Gist options
  • Save vigikaran/38db33eb7e6ec6c3b115e546292956e9 to your computer and use it in GitHub Desktop.
Save vigikaran/38db33eb7e6ec6c3b115e546292956e9 to your computer and use it in GitHub Desktop.
<?php
namespace App\Http\Middleware;
use Closure;
use \Firebase\JWT\JWT;
class AdminTokenAbility
{
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']);
$request->request->add(['token_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