import { NextResponse, type NextRequest } from 'next/server';

const TOKEN_COOKIE = process.env.NEXT_PUBLIC_TOKEN_KEY ?? 'admin_token';

/**
 * 后台路由鉴权中间件（Edge 运行时）
 * - /admin/login 放行
 * - 其他 /admin 路径无 token cookie → 跳登录
 *
 * 说明：token 真值由前端 adminStore 同步写入 cookie，
 * 这里仅做"是否已登录"的初步判断，最终有效性由后端 JWT 校验。
 */
export function middleware(req: NextRequest): NextResponse {
  const { pathname, search } = req.nextUrl;

  if (!pathname.startsWith('/admin')) {
    return NextResponse.next();
  }
  if (pathname === '/admin/login') {
    return NextResponse.next();
  }

  const token = req.cookies.get(TOKEN_COOKIE)?.value;
  if (!token) {
    const url = req.nextUrl.clone();
    url.pathname = '/admin/login';
    url.searchParams.set('redirect', encodeURIComponent(pathname + search));
    return NextResponse.redirect(url);
  }
  return NextResponse.next();
}

export const config = {
  matcher: ['/admin/:path*'],
};
