Laravel version update
Laravel version update
This commit is contained in:
		
							
								
								
									
										382
									
								
								vendor/tymon/jwt-auth/src/Providers/AbstractServiceProvider.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										382
									
								
								vendor/tymon/jwt-auth/src/Providers/AbstractServiceProvider.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,382 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers; | ||||
|  | ||||
| use Namshi\JOSE\JWS; | ||||
| use Tymon\JWTAuth\JWT; | ||||
| use Tymon\JWTAuth\Factory; | ||||
| use Tymon\JWTAuth\JWTAuth; | ||||
| use Tymon\JWTAuth\Manager; | ||||
| use Tymon\JWTAuth\JWTGuard; | ||||
| use Tymon\JWTAuth\Blacklist; | ||||
| use Lcobucci\JWT\Parser as JWTParser; | ||||
| use Tymon\JWTAuth\Http\Parser\Parser; | ||||
| use Tymon\JWTAuth\Http\Parser\Cookies; | ||||
| use Illuminate\Support\ServiceProvider; | ||||
| use Lcobucci\JWT\Builder as JWTBuilder; | ||||
| use Tymon\JWTAuth\Providers\JWT\Namshi; | ||||
| use Tymon\JWTAuth\Http\Middleware\Check; | ||||
| use Tymon\JWTAuth\Providers\JWT\Lcobucci; | ||||
| use Tymon\JWTAuth\Http\Parser\AuthHeaders; | ||||
| use Tymon\JWTAuth\Http\Parser\InputSource; | ||||
| use Tymon\JWTAuth\Http\Parser\QueryString; | ||||
| use Tymon\JWTAuth\Http\Parser\RouteParams; | ||||
| use Tymon\JWTAuth\Contracts\Providers\Auth; | ||||
| use Tymon\JWTAuth\Contracts\Providers\Storage; | ||||
| use Tymon\JWTAuth\Validators\PayloadValidator; | ||||
| use Tymon\JWTAuth\Http\Middleware\Authenticate; | ||||
| use Tymon\JWTAuth\Http\Middleware\RefreshToken; | ||||
| use Tymon\JWTAuth\Claims\Factory as ClaimFactory; | ||||
| use Tymon\JWTAuth\Console\JWTGenerateSecretCommand; | ||||
| use Tymon\JWTAuth\Http\Middleware\AuthenticateAndRenew; | ||||
| use Tymon\JWTAuth\Contracts\Providers\JWT as JWTContract; | ||||
|  | ||||
| abstract class AbstractServiceProvider extends ServiceProvider | ||||
| { | ||||
|     /** | ||||
|      * The middleware aliases. | ||||
|      * | ||||
|      * @var array | ||||
|      */ | ||||
|     protected $middlewareAliases = [ | ||||
|         'jwt.auth' => Authenticate::class, | ||||
|         'jwt.check' => Check::class, | ||||
|         'jwt.refresh' => RefreshToken::class, | ||||
|         'jwt.renew' => AuthenticateAndRenew::class, | ||||
|     ]; | ||||
|  | ||||
|     /** | ||||
|      * Boot the service provider. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     abstract public function boot(); | ||||
|  | ||||
|     /** | ||||
|      * Register the service provider. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function register() | ||||
|     { | ||||
|         $this->registerAliases(); | ||||
|  | ||||
|         $this->registerJWTProvider(); | ||||
|         $this->registerAuthProvider(); | ||||
|         $this->registerStorageProvider(); | ||||
|         $this->registerJWTBlacklist(); | ||||
|  | ||||
|         $this->registerManager(); | ||||
|         $this->registerTokenParser(); | ||||
|  | ||||
|         $this->registerJWT(); | ||||
|         $this->registerJWTAuth(); | ||||
|         $this->registerPayloadValidator(); | ||||
|         $this->registerClaimFactory(); | ||||
|         $this->registerPayloadFactory(); | ||||
|         $this->registerJWTCommand(); | ||||
|  | ||||
|         $this->commands('tymon.jwt.secret'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Extend Laravel's Auth. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function extendAuthGuard() | ||||
|     { | ||||
|         $this->app['auth']->extend('jwt', function ($app, $name, array $config) { | ||||
|             $guard = new JWTGuard( | ||||
|                 $app['tymon.jwt'], | ||||
|                 $app['auth']->createUserProvider($config['provider']), | ||||
|                 $app['request'] | ||||
|             ); | ||||
|  | ||||
|             $app->refresh('request', $guard, 'setRequest'); | ||||
|  | ||||
|             return $guard; | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Bind some aliases. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerAliases() | ||||
|     { | ||||
|         $this->app->alias('tymon.jwt', JWT::class); | ||||
|         $this->app->alias('tymon.jwt.auth', JWTAuth::class); | ||||
|         $this->app->alias('tymon.jwt.provider.jwt', JWTContract::class); | ||||
|         $this->app->alias('tymon.jwt.provider.jwt.namshi', Namshi::class); | ||||
|         $this->app->alias('tymon.jwt.provider.jwt.lcobucci', Lcobucci::class); | ||||
|         $this->app->alias('tymon.jwt.provider.auth', Auth::class); | ||||
|         $this->app->alias('tymon.jwt.provider.storage', Storage::class); | ||||
|         $this->app->alias('tymon.jwt.manager', Manager::class); | ||||
|         $this->app->alias('tymon.jwt.blacklist', Blacklist::class); | ||||
|         $this->app->alias('tymon.jwt.payload.factory', Factory::class); | ||||
|         $this->app->alias('tymon.jwt.validators.payload', PayloadValidator::class); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the JSON Web Token provider. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerJWTProvider() | ||||
|     { | ||||
|         $this->registerNamshiProvider(); | ||||
|         $this->registerLcobucciProvider(); | ||||
|  | ||||
|         $this->app->singleton('tymon.jwt.provider.jwt', function ($app) { | ||||
|             return $this->getConfigInstance('providers.jwt'); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the Lcobucci JWT provider. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerNamshiProvider() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.provider.jwt.namshi', function ($app) { | ||||
|             return new Namshi( | ||||
|                 new JWS(['typ' => 'JWT', 'alg' => $this->config('algo')]), | ||||
|                 $this->config('secret'), | ||||
|                 $this->config('algo'), | ||||
|                 $this->config('keys') | ||||
|             ); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the Lcobucci JWT provider. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerLcobucciProvider() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.provider.jwt.lcobucci', function ($app) { | ||||
|             return new Lcobucci( | ||||
|                 new JWTBuilder(), | ||||
|                 new JWTParser(), | ||||
|                 $this->config('secret'), | ||||
|                 $this->config('algo'), | ||||
|                 $this->config('keys') | ||||
|             ); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the Auth provider. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerAuthProvider() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.provider.auth', function () { | ||||
|             return $this->getConfigInstance('providers.auth'); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the Storage provider. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerStorageProvider() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.provider.storage', function () { | ||||
|             return $this->getConfigInstance('providers.storage'); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the JWT Manager. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerManager() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.manager', function ($app) { | ||||
|             $instance = new Manager( | ||||
|                 $app['tymon.jwt.provider.jwt'], | ||||
|                 $app['tymon.jwt.blacklist'], | ||||
|                 $app['tymon.jwt.payload.factory'] | ||||
|             ); | ||||
|  | ||||
|             return $instance->setBlacklistEnabled((bool) $this->config('blacklist_enabled')) | ||||
|                             ->setPersistentClaims($this->config('persistent_claims')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the Token Parser. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerTokenParser() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.parser', function ($app) { | ||||
|             $parser = new Parser( | ||||
|                 $app['request'], | ||||
|                 [ | ||||
|                     new AuthHeaders, | ||||
|                     new QueryString, | ||||
|                     new InputSource, | ||||
|                     new RouteParams, | ||||
|                     new Cookies($this->config('decrypt_cookies')), | ||||
|                 ] | ||||
|             ); | ||||
|  | ||||
|             $app->refresh('request', $parser, 'setRequest'); | ||||
|  | ||||
|             return $parser; | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the main JWT class. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerJWT() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt', function ($app) { | ||||
|             return (new JWT( | ||||
|                 $app['tymon.jwt.manager'], | ||||
|                 $app['tymon.jwt.parser'] | ||||
|             ))->lockSubject($this->config('lock_subject')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the main JWTAuth class. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerJWTAuth() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.auth', function ($app) { | ||||
|             return (new JWTAuth( | ||||
|                 $app['tymon.jwt.manager'], | ||||
|                 $app['tymon.jwt.provider.auth'], | ||||
|                 $app['tymon.jwt.parser'] | ||||
|             ))->lockSubject($this->config('lock_subject')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the Blacklist. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerJWTBlacklist() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.blacklist', function ($app) { | ||||
|             $instance = new Blacklist($app['tymon.jwt.provider.storage']); | ||||
|  | ||||
|             return $instance->setGracePeriod($this->config('blacklist_grace_period')) | ||||
|                             ->setRefreshTTL($this->config('refresh_ttl')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the payload validator. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerPayloadValidator() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.validators.payload', function () { | ||||
|             return (new PayloadValidator) | ||||
|                 ->setRefreshTTL($this->config('refresh_ttl')) | ||||
|                 ->setRequiredClaims($this->config('required_claims')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the Claim Factory. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerClaimFactory() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.claim.factory', function ($app) { | ||||
|             $factory = new ClaimFactory($app['request']); | ||||
|             $app->refresh('request', $factory, 'setRequest'); | ||||
|  | ||||
|             return $factory->setTTL($this->config('ttl')) | ||||
|                            ->setLeeway($this->config('leeway')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the Payload Factory. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerPayloadFactory() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.payload.factory', function ($app) { | ||||
|             return new Factory( | ||||
|                 $app['tymon.jwt.claim.factory'], | ||||
|                 $app['tymon.jwt.validators.payload'] | ||||
|             ); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the Artisan command. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function registerJWTCommand() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.secret', function () { | ||||
|             return new JWTGenerateSecretCommand; | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Helper to get the config values. | ||||
|      * | ||||
|      * @param  string  $key | ||||
|      * @param  string  $default | ||||
|      * | ||||
|      * @return mixed | ||||
|      */ | ||||
|     protected function config($key, $default = null) | ||||
|     { | ||||
|         return config("jwt.$key", $default); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get an instantiable configuration instance. | ||||
|      * | ||||
|      * @param  string  $key | ||||
|      * | ||||
|      * @return mixed | ||||
|      */ | ||||
|     protected function getConfigInstance($key) | ||||
|     { | ||||
|         $instance = $this->config($key); | ||||
|  | ||||
|         if (is_string($instance)) { | ||||
|             return $this->app->make($instance); | ||||
|         } | ||||
|  | ||||
|         return $instance; | ||||
|     } | ||||
| } | ||||
| @@ -1,38 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers\Auth; | ||||
|  | ||||
| interface AuthInterface | ||||
| { | ||||
|     /** | ||||
|      * Check a user's credentials. | ||||
|      * | ||||
|      * @param  array  $credentials | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function byCredentials(array $credentials = []); | ||||
|  | ||||
|     /** | ||||
|      * Authenticate a user via the id. | ||||
|      * | ||||
|      * @param  mixed  $id | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function byId($id); | ||||
|  | ||||
|     /** | ||||
|      * Get the currently authenticated user. | ||||
|      * | ||||
|      * @return mixed | ||||
|      */ | ||||
|     public function user(); | ||||
| } | ||||
| @@ -11,19 +11,26 @@ | ||||
| 
 | ||||
| namespace Tymon\JWTAuth\Providers\Auth; | ||||
| 
 | ||||
| use Illuminate\Auth\AuthManager; | ||||
| use Tymon\JWTAuth\Contracts\Providers\Auth; | ||||
| use Illuminate\Contracts\Auth\Guard as GuardContract; | ||||
| 
 | ||||
| class IlluminateAuthAdapter implements AuthInterface | ||||
| class Illuminate implements Auth | ||||
| { | ||||
|     /** | ||||
|      * @var \Illuminate\Auth\AuthManager | ||||
|      * The authentication guard. | ||||
|      * | ||||
|      * @var \Illuminate\Contracts\Auth\Guard | ||||
|      */ | ||||
|     protected $auth; | ||||
| 
 | ||||
|     /** | ||||
|      * @param \Illuminate\Auth\AuthManager  $auth | ||||
|      * Constructor. | ||||
|      * | ||||
|      * @param  \Illuminate\Contracts\Auth\Guard  $auth | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function __construct(AuthManager $auth) | ||||
|     public function __construct(GuardContract $auth) | ||||
|     { | ||||
|         $this->auth = $auth; | ||||
|     } | ||||
| @@ -32,9 +39,10 @@ class IlluminateAuthAdapter implements AuthInterface | ||||
|      * Check a user's credentials. | ||||
|      * | ||||
|      * @param  array  $credentials | ||||
|      * | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function byCredentials(array $credentials = []) | ||||
|     public function byCredentials(array $credentials) | ||||
|     { | ||||
|         return $this->auth->once($credentials); | ||||
|     } | ||||
| @@ -43,6 +51,7 @@ class IlluminateAuthAdapter implements AuthInterface | ||||
|      * Authenticate a user via the id. | ||||
|      * | ||||
|      * @param  mixed  $id | ||||
|      * | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function byId($id) | ||||
							
								
								
									
										77
									
								
								vendor/tymon/jwt-auth/src/Providers/Auth/Sentinel.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								vendor/tymon/jwt-auth/src/Providers/Auth/Sentinel.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers\Auth; | ||||
|  | ||||
| use Tymon\JWTAuth\Contracts\Providers\Auth; | ||||
| use Cartalyst\Sentinel\Sentinel as SentinelAuth; | ||||
|  | ||||
| class Sentinel implements Auth | ||||
| { | ||||
|     /** | ||||
|      * The sentinel authentication. | ||||
|      * | ||||
|      * @var \Cartalyst\Sentinel\Sentinel | ||||
|      */ | ||||
|     protected $sentinel; | ||||
|  | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
|      * @param  \Cartalyst\Sentinel\Sentinel  $sentinel | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function __construct(SentinelAuth $sentinel) | ||||
|     { | ||||
|         $this->sentinel = $sentinel; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Check a user's credentials. | ||||
|      * | ||||
|      * @param  array  $credentials | ||||
|      * | ||||
|      * @return mixed | ||||
|      */ | ||||
|     public function byCredentials(array $credentials) | ||||
|     { | ||||
|         return $this->sentinel->stateless($credentials); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Authenticate a user via the id. | ||||
|      * | ||||
|      * @param  mixed  $id | ||||
|      * | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function byId($id) | ||||
|     { | ||||
|         if ($user = $this->sentinel->getUserRepository()->findById($id)) { | ||||
|             $this->sentinel->setUser($user); | ||||
|  | ||||
|             return true; | ||||
|         } | ||||
|  | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the currently authenticated user. | ||||
|      * | ||||
|      * @return \Cartalyst\Sentinel\Users\UserInterface | ||||
|      */ | ||||
|     public function user() | ||||
|     { | ||||
|         return $this->sentinel->getUser(); | ||||
|     } | ||||
| } | ||||
| @@ -1,27 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers\JWT; | ||||
|  | ||||
| interface JWTInterface | ||||
| { | ||||
|     /** | ||||
|      * @param  array  $payload | ||||
|      * @return string | ||||
|      */ | ||||
|     public function encode(array $payload); | ||||
|  | ||||
|     /** | ||||
|      * @param  string  $token | ||||
|      * @return array | ||||
|      */ | ||||
|     public function decode($token); | ||||
| } | ||||
| @@ -1,58 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers\JWT; | ||||
|  | ||||
| abstract class JWTProvider | ||||
| { | ||||
|     /** | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $secret; | ||||
|  | ||||
|     /** | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $algo; | ||||
|  | ||||
|     /** | ||||
|      * @param string  $secret | ||||
|      * @param string  $algo | ||||
|      */ | ||||
|     public function __construct($secret, $algo = 'HS256') | ||||
|     { | ||||
|         $this->secret = $secret; | ||||
|         $this->algo = $algo; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the algorithm used to sign the token. | ||||
|      * | ||||
|      * @param  string  $algo | ||||
|      * @return self | ||||
|      */ | ||||
|     public function setAlgo($algo) | ||||
|     { | ||||
|         $this->algo = $algo; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the algorithm used to sign the token. | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getAlgo() | ||||
|     { | ||||
|         return $this->algo; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										190
									
								
								vendor/tymon/jwt-auth/src/Providers/JWT/Lcobucci.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										190
									
								
								vendor/tymon/jwt-auth/src/Providers/JWT/Lcobucci.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,190 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers\JWT; | ||||
|  | ||||
| use Exception; | ||||
| use ReflectionClass; | ||||
| use Lcobucci\JWT\Parser; | ||||
| use Lcobucci\JWT\Builder; | ||||
| use Lcobucci\JWT\Signer\Rsa; | ||||
| use Lcobucci\JWT\Signer\Ecdsa; | ||||
| use Lcobucci\JWT\Signer\Keychain; | ||||
| use Illuminate\Support\Collection; | ||||
| use Tymon\JWTAuth\Contracts\Providers\JWT; | ||||
| use Tymon\JWTAuth\Exceptions\JWTException; | ||||
| use Lcobucci\JWT\Signer\Rsa\Sha256 as RS256; | ||||
| use Lcobucci\JWT\Signer\Rsa\Sha384 as RS384; | ||||
| use Lcobucci\JWT\Signer\Rsa\Sha512 as RS512; | ||||
| use Lcobucci\JWT\Signer\Hmac\Sha256 as HS256; | ||||
| use Lcobucci\JWT\Signer\Hmac\Sha384 as HS384; | ||||
| use Lcobucci\JWT\Signer\Hmac\Sha512 as HS512; | ||||
| use Lcobucci\JWT\Signer\Ecdsa\Sha256 as ES256; | ||||
| use Lcobucci\JWT\Signer\Ecdsa\Sha384 as ES384; | ||||
| use Lcobucci\JWT\Signer\Ecdsa\Sha512 as ES512; | ||||
| use Tymon\JWTAuth\Exceptions\TokenInvalidException; | ||||
|  | ||||
| class Lcobucci extends Provider implements JWT | ||||
| { | ||||
|     /** | ||||
|      * The Builder instance. | ||||
|      * | ||||
|      * @var \Lcobucci\JWT\Builder | ||||
|      */ | ||||
|     protected $builder; | ||||
|  | ||||
|     /** | ||||
|      * The Parser instance. | ||||
|      * | ||||
|      * @var \Lcobucci\JWT\Parser | ||||
|      */ | ||||
|     protected $parser; | ||||
|  | ||||
|     /** | ||||
|      * Create the Lcobucci provider. | ||||
|      * | ||||
|      * @param  \Lcobucci\JWT\Builder  $builder | ||||
|      * @param  \Lcobucci\JWT\Parser  $parser | ||||
|      * @param  string  $secret | ||||
|      * @param  string  $algo | ||||
|      * @param  array  $keys | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function __construct( | ||||
|         Builder $builder, | ||||
|         Parser $parser, | ||||
|         $secret, | ||||
|         $algo, | ||||
|         array $keys | ||||
|     ) { | ||||
|         parent::__construct($secret, $algo, $keys); | ||||
|  | ||||
|         $this->builder = $builder; | ||||
|         $this->parser = $parser; | ||||
|         $this->signer = $this->getSigner(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Signers that this provider supports. | ||||
|      * | ||||
|      * @var array | ||||
|      */ | ||||
|     protected $signers = [ | ||||
|         'HS256' => HS256::class, | ||||
|         'HS384' => HS384::class, | ||||
|         'HS512' => HS512::class, | ||||
|         'RS256' => RS256::class, | ||||
|         'RS384' => RS384::class, | ||||
|         'RS512' => RS512::class, | ||||
|         'ES256' => ES256::class, | ||||
|         'ES384' => ES384::class, | ||||
|         'ES512' => ES512::class, | ||||
|     ]; | ||||
|  | ||||
|     /** | ||||
|      * Create a JSON Web Token. | ||||
|      * | ||||
|      * @param  array  $payload | ||||
|      * | ||||
|      * @throws \Tymon\JWTAuth\Exceptions\JWTException | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function encode(array $payload) | ||||
|     { | ||||
|         // Remove the signature on the builder instance first. | ||||
|         $this->builder->unsign(); | ||||
|  | ||||
|         try { | ||||
|             foreach ($payload as $key => $value) { | ||||
|                 $this->builder->set($key, $value); | ||||
|             } | ||||
|             $this->builder->sign($this->signer, $this->getSigningKey()); | ||||
|         } catch (Exception $e) { | ||||
|             throw new JWTException('Could not create token: '.$e->getMessage(), $e->getCode(), $e); | ||||
|         } | ||||
|  | ||||
|         return (string) $this->builder->getToken(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Decode a JSON Web Token. | ||||
|      * | ||||
|      * @param  string  $token | ||||
|      * | ||||
|      * @throws \Tymon\JWTAuth\Exceptions\JWTException | ||||
|      * | ||||
|      * @return array | ||||
|      */ | ||||
|     public function decode($token) | ||||
|     { | ||||
|         try { | ||||
|             $jwt = $this->parser->parse($token); | ||||
|         } catch (Exception $e) { | ||||
|             throw new TokenInvalidException('Could not decode token: '.$e->getMessage(), $e->getCode(), $e); | ||||
|         } | ||||
|  | ||||
|         if (! $jwt->verify($this->signer, $this->getVerificationKey())) { | ||||
|             throw new TokenInvalidException('Token Signature could not be verified.'); | ||||
|         } | ||||
|  | ||||
|         return (new Collection($jwt->getClaims()))->map(function ($claim) { | ||||
|             return is_object($claim) ? $claim->getValue() : $claim; | ||||
|         })->toArray(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the signer instance. | ||||
|      * | ||||
|      * @throws \Tymon\JWTAuth\Exceptions\JWTException | ||||
|      * | ||||
|      * @return \Lcobucci\JWT\Signer | ||||
|      */ | ||||
|     protected function getSigner() | ||||
|     { | ||||
|         if (! array_key_exists($this->algo, $this->signers)) { | ||||
|             throw new JWTException('The given algorithm could not be found'); | ||||
|         } | ||||
|  | ||||
|         return new $this->signers[$this->algo]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     protected function isAsymmetric() | ||||
|     { | ||||
|         $reflect = new ReflectionClass($this->signer); | ||||
|  | ||||
|         return $reflect->isSubclassOf(Rsa::class) || $reflect->isSubclassOf(Ecdsa::class); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     protected function getSigningKey() | ||||
|     { | ||||
|         return $this->isAsymmetric() ? | ||||
|             (new Keychain())->getPrivateKey($this->getPrivateKey(), $this->getPassphrase()) : | ||||
|             $this->getSecret(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     protected function getVerificationKey() | ||||
|     { | ||||
|         return $this->isAsymmetric() ? | ||||
|             (new Keychain())->getPublicKey($this->getPublicKey()) : | ||||
|             $this->getSecret(); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										106
									
								
								vendor/tymon/jwt-auth/src/Providers/JWT/Namshi.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								vendor/tymon/jwt-auth/src/Providers/JWT/Namshi.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,106 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers\JWT; | ||||
|  | ||||
| use Exception; | ||||
| use Namshi\JOSE\JWS; | ||||
| use ReflectionClass; | ||||
| use ReflectionException; | ||||
| use InvalidArgumentException; | ||||
| use Namshi\JOSE\Signer\OpenSSL\PublicKey; | ||||
| use Tymon\JWTAuth\Contracts\Providers\JWT; | ||||
| use Tymon\JWTAuth\Exceptions\JWTException; | ||||
| use Tymon\JWTAuth\Exceptions\TokenInvalidException; | ||||
|  | ||||
| class Namshi extends Provider implements JWT | ||||
| { | ||||
|     /** | ||||
|      * The JWS. | ||||
|      * | ||||
|      * @var \Namshi\JOSE\JWS | ||||
|      */ | ||||
|     protected $jws; | ||||
|  | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
|      * @param  \Namshi\JOSE\JWS  $jws | ||||
|      * @param  string  $secret | ||||
|      * @param  string  $algo | ||||
|      * @param  array  $keys | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function __construct(JWS $jws, $secret, $algo, array $keys) | ||||
|     { | ||||
|         parent::__construct($secret, $algo, $keys); | ||||
|  | ||||
|         $this->jws = $jws; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Create a JSON Web Token. | ||||
|      * | ||||
|      * @param  array  $payload | ||||
|      * | ||||
|      * @throws \Tymon\JWTAuth\Exceptions\JWTException | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function encode(array $payload) | ||||
|     { | ||||
|         try { | ||||
|             $this->jws->setPayload($payload)->sign($this->getSigningKey(), $this->getPassphrase()); | ||||
|  | ||||
|             return (string) $this->jws->getTokenString(); | ||||
|         } catch (Exception $e) { | ||||
|             throw new JWTException('Could not create token: '.$e->getMessage(), $e->getCode(), $e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Decode a JSON Web Token. | ||||
|      * | ||||
|      * @param  string  $token | ||||
|      * | ||||
|      * @throws \Tymon\JWTAuth\Exceptions\JWTException | ||||
|      * | ||||
|      * @return array | ||||
|      */ | ||||
|     public function decode($token) | ||||
|     { | ||||
|         try { | ||||
|             // Let's never allow insecure tokens | ||||
|             $jws = $this->jws->load($token, false); | ||||
|         } catch (InvalidArgumentException $e) { | ||||
|             throw new TokenInvalidException('Could not decode token: '.$e->getMessage(), $e->getCode(), $e); | ||||
|         } | ||||
|  | ||||
|         if (! $jws->verify($this->getVerificationKey(), $this->getAlgo())) { | ||||
|             throw new TokenInvalidException('Token Signature could not be verified.'); | ||||
|         } | ||||
|  | ||||
|         return (array) $jws->getPayload(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     protected function isAsymmetric() | ||||
|     { | ||||
|         try { | ||||
|             return (new ReflectionClass(sprintf('Namshi\\JOSE\\Signer\\OpenSSL\\%s', $this->getAlgo())))->isSubclassOf(PublicKey::class); | ||||
|         } catch (ReflectionException $e) { | ||||
|             throw new JWTException('The given algorithm could not be found', $e->getCode(), $e); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -1,76 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| 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(); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										190
									
								
								vendor/tymon/jwt-auth/src/Providers/JWT/Provider.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										190
									
								
								vendor/tymon/jwt-auth/src/Providers/JWT/Provider.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,190 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers\JWT; | ||||
|  | ||||
| use Illuminate\Support\Arr; | ||||
|  | ||||
| abstract class Provider | ||||
| { | ||||
|     /** | ||||
|      * The secret. | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $secret; | ||||
|  | ||||
|     /** | ||||
|      * The array of keys. | ||||
|      * | ||||
|      * @var array | ||||
|      */ | ||||
|     protected $keys; | ||||
|  | ||||
|     /** | ||||
|      * The used algorithm. | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $algo; | ||||
|  | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
|      * @param  string  $secret | ||||
|      * @param  string  $algo | ||||
|      * @param  array  $keys | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function __construct($secret, $algo, array $keys) | ||||
|     { | ||||
|         $this->secret = $secret; | ||||
|         $this->algo = $algo; | ||||
|         $this->keys = $keys; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the algorithm used to sign the token. | ||||
|      * | ||||
|      * @param  string  $algo | ||||
|      * | ||||
|      * @return $this | ||||
|      */ | ||||
|     public function setAlgo($algo) | ||||
|     { | ||||
|         $this->algo = $algo; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the algorithm used to sign the token. | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getAlgo() | ||||
|     { | ||||
|         return $this->algo; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the secret used to sign the token. | ||||
|      * | ||||
|      * @param  string  $secret | ||||
|      * | ||||
|      * @return $this | ||||
|      */ | ||||
|     public function setSecret($secret) | ||||
|     { | ||||
|         $this->secret = $secret; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the secret used to sign the token. | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getSecret() | ||||
|     { | ||||
|         return $this->secret; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the keys used to sign the token. | ||||
|      * | ||||
|      * @param  array  $keys | ||||
|      * | ||||
|      * @return $this | ||||
|      */ | ||||
|     public function setKeys(array $keys) | ||||
|     { | ||||
|         $this->keys = $keys; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the array of keys used to sign tokens | ||||
|      * with an asymmetric algorithm. | ||||
|      * | ||||
|      * @return array | ||||
|      */ | ||||
|     public function getKeys() | ||||
|     { | ||||
|         return $this->keys; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the public key used to sign tokens | ||||
|      * with an asymmetric algorithm. | ||||
|      * | ||||
|      * @return resource|string | ||||
|      */ | ||||
|     public function getPublicKey() | ||||
|     { | ||||
|         return Arr::get($this->keys, 'public'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the private key used to sign tokens | ||||
|      * with an asymmetric algorithm. | ||||
|      * | ||||
|      * @return resource|string | ||||
|      */ | ||||
|     public function getPrivateKey() | ||||
|     { | ||||
|         return Arr::get($this->keys, 'private'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the passphrase used to sign tokens | ||||
|      * with an asymmetric algorithm. | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getPassphrase() | ||||
|     { | ||||
|         return Arr::get($this->keys, 'passphrase'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the key used to sign the tokens. | ||||
|      * | ||||
|      * @return resource|string | ||||
|      */ | ||||
|     protected function getSigningKey() | ||||
|     { | ||||
|         return $this->isAsymmetric() ? $this->getPrivateKey() : $this->getSecret(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the key used to verify the tokens. | ||||
|      * | ||||
|      * @return resource|string | ||||
|      */ | ||||
|     protected function getVerificationKey() | ||||
|     { | ||||
|         return $this->isAsymmetric() ? $this->getPublicKey() : $this->getSecret(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Determine if the algorithm is asymmetric, and thus | ||||
|      * requires a public/private key combo. | ||||
|      * | ||||
|      * @throws \Tymon\JWTAuth\Exceptions\JWTException | ||||
|      * | ||||
|      * @return bool | ||||
|      */ | ||||
|     abstract protected function isAsymmetric(); | ||||
| } | ||||
| @@ -1,278 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers; | ||||
|  | ||||
| use Tymon\JWTAuth\JWTAuth; | ||||
| use Tymon\JWTAuth\Blacklist; | ||||
| use Tymon\JWTAuth\JWTManager; | ||||
| use Tymon\JWTAuth\PayloadFactory; | ||||
| use Tymon\JWTAuth\Claims\Factory; | ||||
| use Illuminate\Support\ServiceProvider; | ||||
| use Tymon\JWTAuth\Commands\JWTGenerateCommand; | ||||
| use Tymon\JWTAuth\Validators\PayloadValidator; | ||||
|  | ||||
| class JWTAuthServiceProvider extends ServiceProvider | ||||
| { | ||||
|     /** | ||||
|      * Indicates if loading of the provider is deferred. | ||||
|      * | ||||
|      * @var bool | ||||
|      */ | ||||
|     protected $defer = false; | ||||
|  | ||||
|     /** | ||||
|      * Boot the service provider. | ||||
|      */ | ||||
|     public function boot() | ||||
|     { | ||||
|         $this->publishes([ | ||||
|             __DIR__.'/../config/config.php' => config_path('jwt.php'), | ||||
|         ], 'config'); | ||||
|  | ||||
|         $this->bootBindings(); | ||||
|  | ||||
|         $this->commands('tymon.jwt.generate'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Bind some Interfaces and implementations. | ||||
|      */ | ||||
|     protected function bootBindings() | ||||
|     { | ||||
|         $this->app['Tymon\JWTAuth\JWTAuth'] = function ($app) { | ||||
|             return $app['tymon.jwt.auth']; | ||||
|         }; | ||||
|  | ||||
|         $this->app['Tymon\JWTAuth\Providers\User\UserInterface'] = function ($app) { | ||||
|             return $app['tymon.jwt.provider.user']; | ||||
|         }; | ||||
|  | ||||
|         $this->app['Tymon\JWTAuth\Providers\JWT\JWTInterface'] = function ($app) { | ||||
|             return $app['tymon.jwt.provider.jwt']; | ||||
|         }; | ||||
|  | ||||
|         $this->app['Tymon\JWTAuth\Providers\Auth\AuthInterface'] = function ($app) { | ||||
|             return $app['tymon.jwt.provider.auth']; | ||||
|         }; | ||||
|  | ||||
|         $this->app['Tymon\JWTAuth\Providers\Storage\StorageInterface'] = function ($app) { | ||||
|             return $app['tymon.jwt.provider.storage']; | ||||
|         }; | ||||
|  | ||||
|         $this->app['Tymon\JWTAuth\JWTManager'] = function ($app) { | ||||
|             return $app['tymon.jwt.manager']; | ||||
|         }; | ||||
|  | ||||
|         $this->app['Tymon\JWTAuth\Blacklist'] = function ($app) { | ||||
|             return $app['tymon.jwt.blacklist']; | ||||
|         }; | ||||
|  | ||||
|         $this->app['Tymon\JWTAuth\PayloadFactory'] = function ($app) { | ||||
|             return $app['tymon.jwt.payload.factory']; | ||||
|         }; | ||||
|  | ||||
|         $this->app['Tymon\JWTAuth\Claims\Factory'] = function ($app) { | ||||
|             return $app['tymon.jwt.claim.factory']; | ||||
|         }; | ||||
|  | ||||
|         $this->app['Tymon\JWTAuth\Validators\PayloadValidator'] = function ($app) { | ||||
|             return $app['tymon.jwt.validators.payload']; | ||||
|         }; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the service provider. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function register() | ||||
|     { | ||||
|         // register providers | ||||
|         $this->registerUserProvider(); | ||||
|         $this->registerJWTProvider(); | ||||
|         $this->registerAuthProvider(); | ||||
|         $this->registerStorageProvider(); | ||||
|         $this->registerJWTBlacklist(); | ||||
|  | ||||
|         $this->registerClaimFactory(); | ||||
|         $this->registerJWTManager(); | ||||
|  | ||||
|         $this->registerJWTAuth(); | ||||
|         $this->registerPayloadValidator(); | ||||
|         $this->registerPayloadFactory(); | ||||
|         $this->registerJWTCommand(); | ||||
|  | ||||
|         $this->mergeConfigFrom(__DIR__.'/../config/config.php', 'jwt'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the User provider. | ||||
|      */ | ||||
|     protected function registerUserProvider() | ||||
|     { | ||||
|         $this->app['tymon.jwt.provider.user'] = $this->app->share(function ($app) { | ||||
|             return $app->make($this->config('providers.user'), [$app->make($this->config('user'))]); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the JSON Web Token provider. | ||||
|      */ | ||||
|     protected function registerJWTProvider() | ||||
|     { | ||||
|         $this->app['tymon.jwt.provider.jwt'] = $this->app->share(function ($app) { | ||||
|  | ||||
|             $secret = $this->config('secret'); | ||||
|             $algo = $this->config('algo'); | ||||
|             $provider = $this->config('providers.jwt'); | ||||
|  | ||||
|             return $app->make($provider, [$secret, $algo]); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the Auth provider. | ||||
|      */ | ||||
|     protected function registerAuthProvider() | ||||
|     { | ||||
|         $this->app['tymon.jwt.provider.auth'] = $this->app->share(function ($app) { | ||||
|             return $this->getConfigInstance($this->config('providers.auth')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the Storage provider. | ||||
|      */ | ||||
|     protected function registerStorageProvider() | ||||
|     { | ||||
|         $this->app['tymon.jwt.provider.storage'] = $this->app->share(function ($app) { | ||||
|             return $this->getConfigInstance($this->config('providers.storage')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the Payload Factory. | ||||
|      */ | ||||
|     protected function registerClaimFactory() | ||||
|     { | ||||
|         $this->app->singleton('tymon.jwt.claim.factory', function () { | ||||
|             return new Factory(); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the JWT Manager. | ||||
|      */ | ||||
|     protected function registerJWTManager() | ||||
|     { | ||||
|         $this->app['tymon.jwt.manager'] = $this->app->share(function ($app) { | ||||
|  | ||||
|             $instance = new JWTManager( | ||||
|                 $app['tymon.jwt.provider.jwt'], | ||||
|                 $app['tymon.jwt.blacklist'], | ||||
|                 $app['tymon.jwt.payload.factory'] | ||||
|             ); | ||||
|  | ||||
|             return $instance->setBlacklistEnabled((bool) $this->config('blacklist_enabled')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the main JWTAuth class. | ||||
|      */ | ||||
|     protected function registerJWTAuth() | ||||
|     { | ||||
|         $this->app['tymon.jwt.auth'] = $this->app->share(function ($app) { | ||||
|  | ||||
|             $auth = new JWTAuth( | ||||
|                 $app['tymon.jwt.manager'], | ||||
|                 $app['tymon.jwt.provider.user'], | ||||
|                 $app['tymon.jwt.provider.auth'], | ||||
|                 $app['request'] | ||||
|             ); | ||||
|  | ||||
|             return $auth->setIdentifier($this->config('identifier')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the main JWTAuth class. | ||||
|      */ | ||||
|     protected function registerJWTBlacklist() | ||||
|     { | ||||
|         $this->app['tymon.jwt.blacklist'] = $this->app->share(function ($app) { | ||||
|             $instance = new Blacklist($app['tymon.jwt.provider.storage']); | ||||
|  | ||||
|             return $instance->setRefreshTTL($this->config('refresh_ttl')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the payload validator. | ||||
|      */ | ||||
|     protected function registerPayloadValidator() | ||||
|     { | ||||
|         $this->app['tymon.jwt.validators.payload'] = $this->app->share(function () { | ||||
|             return with(new PayloadValidator())->setRefreshTTL($this->config('refresh_ttl'))->setRequiredClaims($this->config('required_claims')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the bindings for the Payload Factory. | ||||
|      */ | ||||
|     protected function registerPayloadFactory() | ||||
|     { | ||||
|         $this->app['tymon.jwt.payload.factory'] = $this->app->share(function ($app) { | ||||
|             $factory = new PayloadFactory($app['tymon.jwt.claim.factory'], $app['request'], $app['tymon.jwt.validators.payload']); | ||||
|  | ||||
|             return $factory->setTTL($this->config('ttl')); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Register the Artisan command. | ||||
|      */ | ||||
|     protected function registerJWTCommand() | ||||
|     { | ||||
|         $this->app['tymon.jwt.generate'] = $this->app->share(function () { | ||||
|             return new JWTGenerateCommand(); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Helper to get the config values. | ||||
|      * | ||||
|      * @param  string $key | ||||
|      * @return string | ||||
|      */ | ||||
|     protected function config($key, $default = null) | ||||
|     { | ||||
|         return config("jwt.$key", $default); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get an instantiable configuration instance. Pinched from dingo/api :). | ||||
|      * | ||||
|      * @param  mixed  $instance | ||||
|      * @return object | ||||
|      */ | ||||
|     protected function getConfigInstance($instance) | ||||
|     { | ||||
|         if (is_callable($instance)) { | ||||
|             return call_user_func($instance, $this->app); | ||||
|         } elseif (is_string($instance)) { | ||||
|             return $this->app->make($instance); | ||||
|         } | ||||
|  | ||||
|         return $instance; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										46
									
								
								vendor/tymon/jwt-auth/src/Providers/LaravelServiceProvider.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								vendor/tymon/jwt-auth/src/Providers/LaravelServiceProvider.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers; | ||||
|  | ||||
| class LaravelServiceProvider extends AbstractServiceProvider | ||||
| { | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function boot() | ||||
|     { | ||||
|         $path = realpath(__DIR__.'/../../config/config.php'); | ||||
|  | ||||
|         $this->publishes([$path => config_path('jwt.php')], 'config'); | ||||
|         $this->mergeConfigFrom($path, 'jwt'); | ||||
|  | ||||
|         $this->aliasMiddleware(); | ||||
|  | ||||
|         $this->extendAuthGuard(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Alias the middleware. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function aliasMiddleware() | ||||
|     { | ||||
|         $router = $this->app['router']; | ||||
|  | ||||
|         $method = method_exists($router, 'aliasMiddleware') ? 'aliasMiddleware' : 'middleware'; | ||||
|  | ||||
|         foreach ($this->middlewareAliases as $alias => $middleware) { | ||||
|             $router->$method($alias, $middleware); | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										42
									
								
								vendor/tymon/jwt-auth/src/Providers/LumenServiceProvider.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								vendor/tymon/jwt-auth/src/Providers/LumenServiceProvider.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers; | ||||
|  | ||||
| use Tymon\JWTAuth\Http\Parser\AuthHeaders; | ||||
| use Tymon\JWTAuth\Http\Parser\InputSource; | ||||
| use Tymon\JWTAuth\Http\Parser\QueryString; | ||||
| use Tymon\JWTAuth\Http\Parser\LumenRouteParams; | ||||
|  | ||||
| class LumenServiceProvider extends AbstractServiceProvider | ||||
| { | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function boot() | ||||
|     { | ||||
|         $this->app->configure('jwt'); | ||||
|  | ||||
|         $path = realpath(__DIR__.'/../../config/config.php'); | ||||
|         $this->mergeConfigFrom($path, 'jwt'); | ||||
|  | ||||
|         $this->app->routeMiddleware($this->middlewareAliases); | ||||
|  | ||||
|         $this->extendAuthGuard(); | ||||
|  | ||||
|         $this->app['tymon.jwt.parser']->setChain([ | ||||
|             new AuthHeaders, | ||||
|             new QueryString, | ||||
|             new InputSource, | ||||
|             new LumenRouteParams, | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										160
									
								
								vendor/tymon/jwt-auth/src/Providers/Storage/Illuminate.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								vendor/tymon/jwt-auth/src/Providers/Storage/Illuminate.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,160 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers\Storage; | ||||
|  | ||||
| use BadMethodCallException; | ||||
| use Tymon\JWTAuth\Contracts\Providers\Storage; | ||||
| use Psr\SimpleCache\CacheInterface as PsrCacheInterface; | ||||
| use Illuminate\Contracts\Cache\Repository as CacheContract; | ||||
|  | ||||
| class Illuminate implements Storage | ||||
| { | ||||
|     /** | ||||
|      * The cache repository contract. | ||||
|      * | ||||
|      * @var \Illuminate\Contracts\Cache\Repository | ||||
|      */ | ||||
|     protected $cache; | ||||
|  | ||||
|     /** | ||||
|      * The used cache tag. | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $tag = 'tymon.jwt'; | ||||
|  | ||||
|     /** | ||||
|      * @var bool | ||||
|      */ | ||||
|     protected $supportsTags; | ||||
|  | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
|      * @param  \Illuminate\Contracts\Cache\Repository  $cache | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function __construct(CacheContract $cache) | ||||
|     { | ||||
|         $this->cache = $cache; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Add a new item into storage. | ||||
|      * | ||||
|      * @param  string  $key | ||||
|      * @param  mixed  $value | ||||
|      * @param  int  $minutes | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function add($key, $value, $minutes) | ||||
|     { | ||||
|         $this->cache()->put($key, $value, $minutes); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Add a new item into storage forever. | ||||
|      * | ||||
|      * @param  string  $key | ||||
|      * @param  mixed  $value | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function forever($key, $value) | ||||
|     { | ||||
|         $this->cache()->forever($key, $value); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get an item from storage. | ||||
|      * | ||||
|      * @param  string  $key | ||||
|      * | ||||
|      * @return mixed | ||||
|      */ | ||||
|     public function get($key) | ||||
|     { | ||||
|         return $this->cache()->get($key); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Remove an item from storage. | ||||
|      * | ||||
|      * @param  string  $key | ||||
|      * | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function destroy($key) | ||||
|     { | ||||
|         return $this->cache()->forget($key); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Remove all items associated with the tag. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function flush() | ||||
|     { | ||||
|         $this->cache()->flush(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Return the cache instance with tags attached. | ||||
|      * | ||||
|      * @return \Illuminate\Contracts\Cache\Repository | ||||
|      */ | ||||
|     protected function cache() | ||||
|     { | ||||
|         if ($this->supportsTags === null) { | ||||
|             $this->determineTagSupport(); | ||||
|         } | ||||
|  | ||||
|         if ($this->supportsTags) { | ||||
|             return $this->cache->tags($this->tag); | ||||
|         } | ||||
|  | ||||
|         return $this->cache; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Detect as best we can whether tags are supported with this repository & store, | ||||
|      * and save our result on the $supportsTags flag. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     protected function determineTagSupport() | ||||
|     { | ||||
|         // Laravel >= 5.1.28 | ||||
|         if (method_exists($this->cache, 'tags') || $this->cache instanceof PsrCacheInterface) { | ||||
|             try { | ||||
|                 // Attempt the repository tags command, which throws exceptions when unsupported | ||||
|                 $this->cache->tags($this->tag); | ||||
|                 $this->supportsTags = true; | ||||
|             } catch (BadMethodCallException $ex) { | ||||
|                 $this->supportsTags = false; | ||||
|             } | ||||
|         } else { | ||||
|             // Laravel <= 5.1.27 | ||||
|             if (method_exists($this->cache, 'getStore')) { | ||||
|                 // Check for the tags function directly on the store | ||||
|                 $this->supportsTags = method_exists($this->cache->getStore(), 'tags'); | ||||
|             } else { | ||||
|                 // Must be using custom cache repository without getStore(), and all bets are off, | ||||
|                 // or we are mocking the cache contract (in testing), which will not create a getStore method | ||||
|                 $this->supportsTags = false; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -1,94 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers\Storage; | ||||
|  | ||||
| use Illuminate\Cache\CacheManager; | ||||
|  | ||||
| class IlluminateCacheAdapter implements StorageInterface | ||||
| { | ||||
|     /** | ||||
|      * @var \Illuminate\Cache\CacheManager | ||||
|      */ | ||||
|     protected $cache; | ||||
|  | ||||
|     /** | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $tag = 'tymon.jwt'; | ||||
|  | ||||
|     /** | ||||
|      * @param \Illuminate\Cache\CacheManager  $cache | ||||
|      */ | ||||
|     public function __construct(CacheManager $cache) | ||||
|     { | ||||
|         $this->cache = $cache; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Add a new item into storage. | ||||
|      * | ||||
|      * @param  string  $key | ||||
|      * @param  mixed  $value | ||||
|      * @param  int  $minutes | ||||
|      * @return void | ||||
|      */ | ||||
|     public function add($key, $value, $minutes) | ||||
|     { | ||||
|         $this->cache()->put($key, $value, $minutes); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Check whether a key exists in storage. | ||||
|      * | ||||
|      * @param  string  $key | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function has($key) | ||||
|     { | ||||
|         return $this->cache()->has($key); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Remove an item from storage. | ||||
|      * | ||||
|      * @param  string  $key | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function destroy($key) | ||||
|     { | ||||
|         return $this->cache()->forget($key); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Remove all items associated with the tag. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function flush() | ||||
|     { | ||||
|         $this->cache()->flush(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Return the cache instance with tags attached. | ||||
|      * | ||||
|      * @return \Illuminate\Cache\CacheManager | ||||
|      */ | ||||
|     protected function cache() | ||||
|     { | ||||
|         if (! method_exists($this->cache, 'tags')) { | ||||
|             return $this->cache; | ||||
|         } | ||||
|  | ||||
|         return $this->cache->tags($this->tag); | ||||
|     } | ||||
| } | ||||
| @@ -1,39 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers\Storage; | ||||
|  | ||||
| interface StorageInterface | ||||
| { | ||||
|     /** | ||||
|      * @param string $key | ||||
|      * @param int $minutes | ||||
|      * @return void | ||||
|      */ | ||||
|     public function add($key, $value, $minutes); | ||||
|  | ||||
|     /** | ||||
|      * @param string $key | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function has($key); | ||||
|  | ||||
|     /** | ||||
|      * @param string $key | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function destroy($key); | ||||
|  | ||||
|     /** | ||||
|      * @return void | ||||
|      */ | ||||
|     public function flush(); | ||||
| } | ||||
| @@ -1,44 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers\User; | ||||
|  | ||||
| use Illuminate\Database\Eloquent\Model; | ||||
|  | ||||
| class EloquentUserAdapter implements UserInterface | ||||
| { | ||||
|     /** | ||||
|      * @var \Illuminate\Database\Eloquent\Model | ||||
|      */ | ||||
|     protected $user; | ||||
|  | ||||
|     /** | ||||
|      * Create a new User instance. | ||||
|      * | ||||
|      * @param  \Illuminate\Database\Eloquent\Model  $user | ||||
|      */ | ||||
|     public function __construct(Model $user) | ||||
|     { | ||||
|         $this->user = $user; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the user by the given key, value. | ||||
|      * | ||||
|      * @param  mixed  $key | ||||
|      * @param  mixed  $value | ||||
|      * @return Illuminate\Database\Eloquent\Model | ||||
|      */ | ||||
|     public function getBy($key, $value) | ||||
|     { | ||||
|         return $this->user->where($key, $value)->first(); | ||||
|     } | ||||
| } | ||||
| @@ -1,24 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of jwt-auth. | ||||
|  * | ||||
|  * (c) Sean Tymon <tymon148@gmail.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Tymon\JWTAuth\Providers\User; | ||||
|  | ||||
| interface UserInterface | ||||
| { | ||||
|     /** | ||||
|      * Get the user by the given key, value. | ||||
|      * | ||||
|      * @param string $key | ||||
|      * @param mixed $value | ||||
|      * @return Illuminate\Database\Eloquent\Model|null | ||||
|      */ | ||||
|     public function getBy($key, $value); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Manish Verma
					Manish Verma