Update v1.0.6
This commit is contained in:
67
vendor/tymon/jwt-auth/src/Providers/JWT/NamshiAdapter.php
vendored
Normal file
67
vendor/tymon/jwt-auth/src/Providers/JWT/NamshiAdapter.php
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
namespace Tymon\JWTAuth\Providers\JWT;
|
||||
|
||||
use Exception;
|
||||
use Namshi\JOSE\JWS;
|
||||
use Tymon\JWTAuth\Exceptions\JWTException;
|
||||
use Tymon\JWTAuth\Exceptions\TokenInvalidException;
|
||||
|
||||
class NamshiAdapter extends JWTProvider implements JWTInterface
|
||||
{
|
||||
/**
|
||||
* @var \Namshi\JOSE\JWS
|
||||
*/
|
||||
protected $jws;
|
||||
|
||||
/**
|
||||
* @param string $secret
|
||||
* @param string $algo
|
||||
* @param null $driver
|
||||
*/
|
||||
public function __construct($secret, $algo, $driver = null)
|
||||
{
|
||||
parent::__construct($secret, $algo);
|
||||
|
||||
$this->jws = $driver ?: new JWS(['typ' => 'JWT', 'alg' => $algo]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a JSON Web Token
|
||||
*
|
||||
* @return string
|
||||
* @throws \Tymon\JWTAuth\Exceptions\JWTException
|
||||
*/
|
||||
public function encode(array $payload)
|
||||
{
|
||||
try {
|
||||
$this->jws->setPayload($payload)->sign($this->secret);
|
||||
|
||||
return $this->jws->getTokenString();
|
||||
} catch (Exception $e) {
|
||||
throw new JWTException('Could not create token: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode a JSON Web Token
|
||||
*
|
||||
* @param string $token
|
||||
* @return array
|
||||
* @throws \Tymon\JWTAuth\Exceptions\JWTException
|
||||
*/
|
||||
public function decode($token)
|
||||
{
|
||||
try {
|
||||
$jws = JWS::load($token);
|
||||
} catch (Exception $e) {
|
||||
throw new TokenInvalidException('Could not decode token: ' . $e->getMessage());
|
||||
}
|
||||
|
||||
if (! $jws->verify($this->secret, $this->algo)) {
|
||||
throw new TokenInvalidException('Token Signature could not be verified.');
|
||||
}
|
||||
|
||||
return $jws->getPayload();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user