<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            if ($guard === 'admin') {
                return redirect('/admin');
            }

            // If user has frontend auth but wants to access admin authentication routes,
            // allow them to proceed (don't redirect to /home)
            if ($this->isAdminAuthRoute($request->path())) {
                return $next($request);
            }

            return redirect('/home');
        }

        return $next($request);
    }

    /**
     * Check if the current route is an admin authentication route
     */
    private function isAdminAuthRoute($path)
    {
        $adminAuthRoutes = [
            'admin/login',
            'admin/two-factor',
            'admin/password/reset',
        ];

        // Check exact matches
        if (in_array($path, $adminAuthRoutes)) {
            return true;
        }

        // Check if it starts with admin/password/reset/ (for token routes)
        if (str_starts_with($path, 'admin/password/reset/')) {
            return true;
        }

        return false;
    }
}
