Pri izradi web aplikacije često se javlja potreba da se registrovni korisnici, posle login-a, usmere na deo sajta predviđen baš za njihovu ulogu (Role). Kao i za svaki zadatak, i ovde ima mnogo rešenja, a mi ćemo navesti dva: koristeći ugrađenu Laravel autentifikaciju i koristeći Fortify paket za autentifikaciju.
Preusmeravanje ako koristie Laravel Fortify
Ako već niste, instalirajte Laravel Fortify:
composer require laravel/fortify
Objavite Fortify asset-e:
php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider"
Uverite se da vaš User
model ima kolonu (npr. role
) koja će sadržavati informacije o ulozi korisnika.
Prilagodite Odziv na Login: Otvorite app/Providers/FortifyServiceProvider.php
i definisati prilagođeni odziv za logovanje:
use App\Http\Responses\LoginResponse; Fortify::loginResponse(function () { return new LoginResponse(); });
Kreirajte LoginResponse: Kreirajte LoginResponse
klasu:
php artisan make:response Http/Responses/LoginResponse
Definišite Logiku za Preusmeravanje: U LoginResponse
klasi, implementirajte logiku preusmeravanja na osnovu uloge korisnika:
public function toResponse($request) { $home = '/default-home-route'; if ($request->user()->role == 'admin') { $home = '/dashboard/admin'; } elseif ($request->user()->role == 'doctor') { $home = 'dashboard/client'; } // Dodajte više uslova prema potrebi... return redirect()->intended($home); }
Preusmeravanje ako koristie Laravel ugrađenu Autentifikaciju
Ako koristite „čisti“ Laravel 9 bez Fortify-a ili bilo kog UI paketa, evo kako možete implementirati logiku za preusmeravanje na osnovu role:
- Autentifikacija: Koristite Laravelovu ugrađenu autentifikacijsku funkcionalnost kako biste implementirali osnovnu autentifikaciju.
- Middleware: Implementirajte middleware (ili iskoristite postojeći
RedirectIfAuthenticated
) koji će pregledati ulogovanog korisnika i njegovu rolu, a zatim preusmeriti korisnika na odgovarajuću stranicu. - Dodela middleware-a ruti: Dodelite middleware određenim rutama ili grupi ruta kako biste osigurali da korisnik bude preusmeren na osnovu njegove role kad god pristupi određenoj ruti.
- Dodela rola: U vašem korisničkom modelu (obično
User.php
), možete definisati relacije ili metode koje omogućavaju prepoznavanje role korisnika. Ovo može biti jednostavna kolona u bazi podataka, povezivanje sa drugom tabelom ili bilo koja druga logika koja vam je potrebna.
Sve ovo može se postići koristeći osnovni Laravel bez potrebe za bilo kojim dodatnim UI paketima. UI paketi poput Laravel UI-a ili Jetstream-a su tu da vam pomognu da brzo postavite osnovne stvari kao što su forme za prijavu, registraciju itd, ali nisu obavezni za implementaciju ove logike.
Ugrađena autentifikacija Laravela
Ugrađena autentikacija Laravela omogućava vam da brzo postavite sistem za registraciju, prijavu, resetovanje lozinke i slično. Osnovni koraci za korišćenje Laravelove ugrađene autentikacije su sledeći:
Instalacija:
Prvo, trebali biste instalirati Laravel. Pretpostavljam da već imate instaliran Laravel, ali u slučaju da ga nemate, koristite:
composer create-project --prefer-dist laravel/laravel naziv_projekta
Kreiranje baze podataka:
Napravite bazu podataka i postavite konekcijske parametre u .env
fajlu.
Migracije:
Laravel dolazi sa unapred definisanim migracijama za tabele users
, password_resets
i failed_jobs
. Pokrenite migracije:
php artisan migrate
Ovo će kreirati potrebne tabele u vašoj bazi podataka.
Kreiranje autentifikacionih ruta i vjuova:
U Laravelu 7.x i ranijim verzijama, mogli ste koristiti laravel/ui
paket kako biste generisali osnovne vjuove i rute za autentikaciju:
composer require laravel/ui php artisan ui bootstrap --auth
Međutim, u novijim verzijama Laravela (8.x, 9.x), preporučuje se korišćenje laravel/breeze
ili laravel/jetstream
.
Korišćenje:
Posle ove konfiguracije, imaćete pristup rutama za prijavu, registraciju, odjavu i resetovanje lozinke:
/login
/register
/logout
/password/reset
Zaštita ruta:
Možete zaštititi svoje rute koristeći auth
middleware:
Route::middleware(['auth'])->group(function () { // sve rute ovde će zahtevati autentikaciju });
Redirekcija na osnovu role:
Ako želite da dodate logiku za preusmeravanje na osnovu role, prilagodite RedirectIfAuthenticated
middleware ili kreirajte svoj vlastiti middleware.
Dodeljivanje role korisnicima:
Možete dodati kolonu role
u tabelu users
putem migracije ili koristiti pakete poput spatie/laravel-permission
za složenije sisteme dozvola i rola.
Ovi koraci vam omogućavaju da brzo postavite i koristite ugrađenu autentikaciju u Laravelu.