Wordpress | Laravel | PHP

Preusmeravanje posle login-a

Sadržaj

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:

  1. Autentifikacija: Koristite Laravelovu ugrađenu autentifikacijsku funkcionalnost kako biste implementirali osnovnu autentifikaciju.
  2. Middleware: Implementirajte middleware (ili iskoristite postojeći RedirectIfAuthenticated) koji će pregledati ulogovanog korisnika i njegovu rolu, a zatim preusmeriti korisnika na odgovarajuću stranicu.
  3. 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.
  4. 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.