<?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);
    }
} 