<?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.
 */

return [

	/*
	|--------------------------------------------------------------------------
	| JWT Authentication Secret
	|--------------------------------------------------------------------------
	|
	| Don't forget to set this, as it will be used to sign your tokens.
	| A helper command is provided for this: `php artisan jwt:generate`
	|
	*/

	'secret' => env( 'JWT_SECRET', 'VqugtHjFt1v4rh7AsvSBE6IA66lf1Wh3' ),

	/*
	|--------------------------------------------------------------------------
	| JWT time to live
	|--------------------------------------------------------------------------
	|
	| Specify the length of time (in minutes) that the token will be valid for.
	| Defaults to 1 hour
	|
	*/

	'ttl' => 60 * 24 * 30 * 3,

	/*
	|--------------------------------------------------------------------------
	| Refresh time to live
	|--------------------------------------------------------------------------
	|
	| Specify the length of time (in minutes) that the token can be refreshed
	| within. I.E. The user can refresh their token within a 2 week window of
	| the original token being created until they must re-authenticate.
	| Defaults to 2 weeks
	|
	*/

	'refresh_ttl' => 60 * 24 * 30 * 3,

	/*
	|--------------------------------------------------------------------------
	| JWT hashing algorithm
	|--------------------------------------------------------------------------
	|
	| Specify the hashing algorithm that will be used to sign the token.
	|
	| See here: https://github.com/namshi/jose/tree/2.2.0/src/Namshi/JOSE/Signer
	| for possible values
	|
	*/

	'algo' => 'HS256',

	/*
	|--------------------------------------------------------------------------
	| User Model namespace
	|--------------------------------------------------------------------------
	|
	| Specify the full namespace to your User model.
	| e.g. 'Acme\Entities\User'
	|
	*/

	'user' => 'App\User',

	/*
	|--------------------------------------------------------------------------
	| User identifier
	|--------------------------------------------------------------------------
	|
	| Specify a unique property of the user that will be added as the 'sub'
	| claim of the token payload.
	|
	*/

	'identifier' => 'id',

	/*
	|--------------------------------------------------------------------------
	| Required Claims
	|--------------------------------------------------------------------------
	|
	| Specify the required claims that must exist in any token.
	| A TokenInvalidException will be thrown if any of these claims are not
	| present in the payload.
	|
	*/

	'required_claims' => [ 'iss', 'iat', 'exp', 'nbf', 'sub', 'jti' ],

	/*
	|--------------------------------------------------------------------------
	| Blacklist Enabled
	|--------------------------------------------------------------------------
	|
	| In order to invalidate tokens, you must have the blacklist enabled.
	| If you do not want or need this functionality, then set this to false.
	|
	*/

	'blacklist_enabled' => env( 'JWT_BLACKLIST_ENABLED', false ),

	/*
	|--------------------------------------------------------------------------
	| Providers
	|--------------------------------------------------------------------------
	|
	| Specify the various providers used throughout the package.
	|
	*/

	'providers' => [

		/*
		|--------------------------------------------------------------------------
		| User Provider
		|--------------------------------------------------------------------------
		|
		| Specify the provider that is used to find the user based
		| on the subject claim
		|
		*/

		'user' => 'Tymon\JWTAuth\Providers\User\EloquentUserAdapter',

		/*
		|--------------------------------------------------------------------------
		| JWT Provider
		|--------------------------------------------------------------------------
		|
		| Specify the provider that is used to create and decode the tokens.
		|
		*/

		'jwt' => 'Tymon\JWTAuth\Providers\JWT\NamshiAdapter',

		/*
		|--------------------------------------------------------------------------
		| Authentication Provider
		|--------------------------------------------------------------------------
		|
		| Specify the provider that is used to authenticate users.
		|
		*/

		'auth' => 'Tymon\JWTAuth\Providers\Auth\IlluminateAuthAdapter',

		/*
		|--------------------------------------------------------------------------
		| Storage Provider
		|--------------------------------------------------------------------------
		|
		| Specify the provider that is used to store tokens in the blacklist
		|
		*/

		'storage' => 'Tymon\JWTAuth\Providers\Storage\IlluminateCacheAdapter',

	],

];
