44 lines
1.4 KiB
PHP
44 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
use Closure;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class AdminMiddleware
|
|
{
|
|
/**
|
|
* Handle an incoming request.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @param \Closure $next
|
|
* @return mixed
|
|
*/
|
|
public function handle(Request $request, Closure $next)
|
|
{
|
|
// Periksa apakah user sudah login dan memiliki role admin
|
|
if (!Auth::check() || Auth::user()->role !== 'admin') {
|
|
|
|
// Periksa juga apakah token API masih ada
|
|
$token = session('api_token');
|
|
$tokenType = session('token_type');
|
|
$userData = session('user_data');
|
|
|
|
// Jika tidak ada token atau user data
|
|
if (!$token || !$tokenType || !$userData || !isset($userData['role']) || $userData['role'] !== 'admin') {
|
|
return redirect()->route('admin.login')
|
|
->with('error', 'Anda harus login sebagai admin untuk mengakses halaman ini.');
|
|
}
|
|
|
|
// Jika ada token API dan role admin di session, izinkan akses
|
|
if ($token && $tokenType && isset($userData['role']) && $userData['role'] === 'admin') {
|
|
return $next($request);
|
|
}
|
|
|
|
return redirect()->route('admin.login');
|
|
}
|
|
|
|
return $next($request);
|
|
}
|
|
}
|