Propaganistas / Laravel Fakeid
Projects that are alternatives of or similar to Laravel Fakeid
Laravel FakeID
Enables automatic Eloquent model ID obfuscation in routes using Optimus.
Installation
-
Run the Composer require command to install the package
composer require propaganistas/laravel-fakeid
-
The package will automatically register itself.
-
Run the following artisan command to auto-initialize the package's settings
php artisan fakeid:setup
Usage
First of all, make sure the model is bound to Laravel's Router using the model()
method, e.g. on top of the routes.php
file (or in the boot()
method of RouteServiceProvider
if you use route caching):
Route::model('mymodel', 'App\MyModel');
This way you can reference a placeholder in your routes (edit/{mymodel}
). By default Laravel will insert the model's primary key in the placeholder. But...
...if you then import the RoutesWithFakeIds
trait into your model:
use Illuminate\Database\Eloquent\Model;
use Propaganistas\LaravelFakeId\RoutesWithFakeIds;
class MyModel extends Model {
use RoutesWithFakeIds;
}
...all routes generated for this particular model will expose a fake ID instead of the raw primary key. Moreover incoming requests containing those fake IDs are automatically converted back to a real ID. The obfuscation layer is therefore transparent and doesn't require you to rethink everything. Just use Laravel as you normally would.
Example
Assuming an Article
model having a named show
route.
routes/web.php
:
Route::model('article', 'App\Article');
Route::get('articles/{article}', '[email protected]')->name('articles.show');
app/Article.php
use Illuminate\Database\Eloquent\Model;
use Propaganistas\LaravelFakeId\RoutesWithFakeIds;
class Article extends Model {
use RoutesWithFakeIds;
}
A route to this specific endpoint can now be generated using Laravel's route()
helper, and it will automatically contain a fake ID:
<a href="{{ route('articles.show', $article) }}"> {{ $article->name }} </a>
FAQ
Why didn't you implement Hashids instead of Optimus?
PERFORMANCE! Optimus is based on Knuth's multiplicative hashing method and proves to be quite faster than Hashids. It's even mentioned on Hashids' own website.