$ composer require mehradsadeghi/laravel-token-generator
It'll work with the default configurations, But you can publish the config file in order to change defaults or add your custom driver.
$ php artisan vendor:publish
There are 3 drivers available:
- Basic
- Crypto
- Unique
You can set the default driver in config/token-generator.php
or in your .env
file by TOKEN_GENERATOR_DEFAULT
key.
It simply generates a random token.
Example:
\Mehradsadeghi\TokenGenerator\TokenGeneratorFacade::generate();
You can also change the default length of token in config file:
'basic' => [
'driver' => \Mehradsadeghi\TokenGenerator\Drivers\Basic::class,
'options' => [
'length' => 10
]
]
It generates cryptographically secure pseudo-random token.
It generates a hashed (unique) token, based on given algorithm. You can specify the algorithm in options
index of unique
driver array.
'unique' => [
'driver' => \Mehradsadeghi\TokenGenerator\Drivers\Unique::class,
'options' => [
'alg' => 'sha256'
]
]
Example:
\Mehradsadeghi\TokenGenerator\TokenGeneratorFacade::generate('your input');
token()
helper function and TokenGeneratorFacade
can be used interchangeably. For example:
token()->generate();
You can switch generator driver dynamically at run-time:
token()->generate(); // default driver
token()->driver('crypto')->generate(); // crypto driver
also
TokenGeneratorFacade::driver('crypto')->generate();
You can set up your own custom driver in a few steps.
- Add your desired configuration into
token-generator
config file:
return [
'default' => env('TOKEN_GENERATOR_DEFAULT', 'basic'),
'drivers' => [
...
'new_driver' => [
'driver' => Path\To\Your\CustomGenerator::class,
'options' => [
'length' => 20
]
]
]
];
Note that options
is optional.
- Create the
CustomGenerator.php
:
use Mehradsadeghi\TokenGenerator\TokenGeneratorContract;
class CustomGenerator implements TokenGeneratorContract
{
private $length;
public function __construct($length)
{
$this->length = $length;
}
public function generate(): string
{
// your logic to generate token
}
}
- And finally:
token()->driver('new_driver')->generate();