Obscure
, (*1)
Obscure your Laravel 5 applications IDs from URLs and requests. It's based on the popuplar Hashids package, (*2)
// http://exampleapplication.com/user/ALnLzW
Route::get('/user/{id}', function ($id) {
return "ID: " . $id; //returns a number
})->middleware('obscure');
Contents
, (*3)
Installation
In order to add obscure to your project, just add, (*4)
"sschlein/obscure": "dev-develop"
to your composer.json. Then run composer install or composer update., (*5)
Or run composer require sschlein/obscure if you prefer that., (*6)
Add the service provider to your app
In your config\app.php file, add the obscure service provider to providers array., (*7)
// ...
Sschlein\Obscure\ObscureServiceProvider::class,
// ...
Set a salt hash in your .env file to generate unique hashs., (*8)
OBSCURE_SALT=your-unique-phrase
Add the middleware to your Kernel
In your app\Http\Kernel.php file, add the obscure middleware to the $routeMiddleware array., (*9)
protected $routeMiddleware = [
// ...
'obscure' => \Sschlein\Obscure\Middleware\Obscure::class,
// ...
];
, (*10)
Usage
By default, Obscure looks for routes or request parameters with a parameter named id.
To modify this parameter, add it as a middleware parameter like this:, (*11)
Route::get('/obscure/{user_id}', function ($user_id) {
return "ID: " . $id; // returns a number
})->middleware('obscure:user_id');
If this parameter is present, it gets decoded to the id and can be used without applications changes., (*12)
// http://exampleapplication.com/obscure/ALnLzW
// hashed with salt "salt"
Route::get('/obscure/{id}', function ($id) {
return "ID: " . $id; // returns a number
})->middleware('obscure');
To generate routes or request parameters, you can use the blade extension. In a blade template, just use, (*13)
<a href="/users/@obscure(1245)">View User</a>
<input type="hidden" name="id" value="@obscure(1234)">
If you need to obscure the id within a controller, use the facade, (*14)
public function store(...)
{
return redirect('users/' . Obscure::encode(1234));
}
That's it., (*15)
, (*16)
Optional Configuration
Obscure uses some defaults that can be configured. To change the default configuration, publish the config., (*17)
php artisan vendor:publish
You can now configure the salt hash, the length of the hash and the used alphabet of the hash in the config/obscure.php., (*18)
, (*19)
License
Obscure is free software distributed under the terms of the MIT license., (*20)