fix: 优化图片上传URL和房东入口登录检查体验

This commit is contained in:
Cuishibing
2026-03-22 23:04:39 +08:00
parent fbd5f94a43
commit 9998fb8649
2 changed files with 38 additions and 14 deletions

View File

@@ -25,7 +25,9 @@ export async function POST(request: NextRequest) {
const buffer = await file.arrayBuffer();
await fs.writeFile(filepath, Buffer.from(buffer));
const url = `/uploads/${filename}`;
const host = request.headers.get('host') || 'localhost:3000';
const protocol = request.headers.get('x-forwarded-proto') || 'http';
const url = `${protocol}://${host}/uploads/${filename}`;
return NextResponse.json({ url });
} catch (error) {
console.error('Upload error:', error);

View File

@@ -11,23 +11,45 @@ export default function OwnerPage() {
const [password, setPassword] = useState("");
const [error, setError] = useState("");
const [loading, setLoading] = useState(false);
const [user, setUser] = useState<{ username: string } | null>(null);
const [checking, setChecking] = useState(true);
const [ready, setReady] = useState(false);
useEffect(() => {
checkAuth();
}, []);
let cancelled = false;
async function checkAuth() {
try {
const res = await fetch("/api/auth/me");
const data = await res.json();
if (data.user) {
setUser(data.user);
router.push("/owner/dashboard");
if (!cancelled && data.user) {
router.replace("/owner/dashboard");
return;
}
} catch (error) {
console.error("检查登录状态失败", error);
}
if (!cancelled) {
setChecking(false);
setReady(true);
}
}
checkAuth();
return () => {
cancelled = true;
};
}, [router]);
if (!ready) {
return (
<div className="min-h-screen flex items-center justify-center bg-gray-50">
<div className="text-center">
<div className="text-4xl mb-2 animate-bounce">🏗</div>
<p className="text-gray-500">...</p>
</div>
</div>
);
}
async function handleSubmit(e: React.FormEvent) {