GithubHelp home page GithubHelp logo

bpartner / laravel-fakeid Goto Github PK

View Code? Open in Web Editor NEW

This project forked from propaganistas/laravel-fakeid

0.0 1.0 0.0 55 KB

Automatic model ID obfuscation in routes for Laravel

License: MIT License

PHP 100.00%

laravel-fakeid's Introduction

Laravel FakeID

Build Status Scrutinizer Code Quality Code Coverage Latest Stable Version Total Downloads License

Enables automatic Eloquent model ID obfuscation in routes using Optimus.

Installation

  1. Run the Composer require command to install the package

    composer require propaganistas/laravel-fakeid
  2. The package will automatically register itself.

  3. 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}', 'ArticleController@show')->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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.