Saya ingin membuat middleware di proyek laravel saya untuk memeriksa jenis pengguna apa yang login ke situs web saya. Idenya adalah saya memeriksa apakah pengguna login di middleware dan kemudian mengatur variabel sesi ke nilai tertentu.
Ini adalah middlewarenya:
CheckIfLoggedin.php
use Closure;
use Auth;
class CheckIfLoggedin
{
public function handle($request, Closure $next)
{
if (Auth::check()) {
$request->session()->put('loggedin', 'admin');
}
return $next($request);
}
}
Saya telah mendaftarkannya sebagai middleware global seperti yang dijelaskan dalam dokumen dengan menambahkan baris ini ke Kernel.php:
protected $middleware = [
// ...
\App\Http\Middleware\CheckIfLoggedin::class,
];
Dan saya memeriksa nilai variabel sesi ini di template blade saya seperti ini:
@if(session('loggedin'))
<!-- some html code -->
@endif
Saya tahu bahwa saya juga dapat menggunakan ini untuk verifikasi login:
@auth
<!-- some html code -->
@endauth
tetapi alasan menggunakan variabel sesi ini adalah karena akan ada berbagai jenis anggota (seperti member
atau admin
) dan saya akan menetapkan jenis login ke variabel sesi itu nanti, maka variabel tersebut akan berfungsi seperti ini di templat blade:
@if(session('loggedin')=='member')
<!-- some html code that only members can see -->
@elseif(session('loggedin')=='admin')
<!-- some html code that only admins can see -->
@endif
Adakah ide mengapa middleware ini tidak berfungsi seperti yang saya harapkan? Perhatikan bahwa saya cukup baru mengenal Laravel...
Terima kasih!