Autorizimi

Laravel ofron një mënyrë relativisht të thjeshtë për autorizimin e veprimeve të përdoruesit ndaj një resursi të caktuar. Kjo realizohet me dy mënyra: gates dhe policies.

Gates ofron një teknikë të thjeshtë që bazohet në Closure, ndërsa Policies mundëson grupimin e logjikës së qasjes rreth një modeli apo resursi.

Ndonëse ofrojnë funksionalitet të njëjtë, nuk është e thënë të përcaktohemi për njërën mënyrë apo tjetrën. Në një aplikacion, mund t'i kombinojmë të dy mënyrat, sipas nevojës.

Gates janë më të përshtatshme për veprimet që nuk janë të ndërlidhura me ndonjë model apo resurs, siç është për shembull hapja e panelit të administratorit. Policies janë më të përshtatshme për autorizimin e një veprimi që ka lidhshmëri me një model apo resurs.

Gates

Gates janë Closure që determinojnë nëse përdoruesi është i autorizar për kryerjen e një veprimit të caktuar. Zakonisht definohen në klasën App\Providers\AuthServiceProvider duke përdorur fasadën Gate. Gates gjithmonë e pranon një instancë të modelit User si argument të parë, dhe mund të pranojë edhe argumente të tjera opsionale siç janë modelet relevant të Eloquent.

public function boot()
{
    $this->registerPolicies();

    Gate::define('update-post', function ($user, $post) {
        return $user->id == $post->user_id;
    });
}

Gates mund të definohen edhe në formën Class@method si në rastin e kontrollerëve.

public function boot()
{
    $this->registerPolicies();

    Gate::define('update-post', 'PostPolicy@update');
}

Policies