0.2 在线版本打通
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
import { useCallback, useState } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { supabaseBrowser } from "@/lib/supabase/client";
|
||||
import { getSupabaseBrowserClient } from "@/lib/supabase/client";
|
||||
import { Input } from "@/components/ui/input";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
||||
@@ -19,22 +19,49 @@ export default function LoginPage() {
|
||||
const handleLogin = useCallback(async () => {
|
||||
setLoading(true);
|
||||
setMessage("");
|
||||
const { data, error } = await supabaseBrowser.auth.signInWithPassword({
|
||||
email,
|
||||
password,
|
||||
});
|
||||
const supabaseBrowser = getSupabaseBrowserClient();
|
||||
let data: unknown = null;
|
||||
let error: { message?: string } | null = null;
|
||||
try {
|
||||
const result = await supabaseBrowser.auth.signInWithPassword({
|
||||
email,
|
||||
password,
|
||||
});
|
||||
data = result.data;
|
||||
error = result.error as unknown as { message?: string } | null;
|
||||
} catch (err) {
|
||||
const runtimeCfg = (() => {
|
||||
try {
|
||||
return (window as unknown as { __MNOTE_RUNTIME_CONFIG__?: { supabaseUrl?: string } }).__MNOTE_RUNTIME_CONFIG__;
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
})();
|
||||
const supabaseUrlHint = runtimeCfg?.supabaseUrl ? `(Supabase:${runtimeCfg.supabaseUrl})` : "";
|
||||
setLoading(false);
|
||||
setMessage(`登录失败:网络或证书异常 ${supabaseUrlHint}\n${String(err)}`);
|
||||
return;
|
||||
}
|
||||
setLoading(false);
|
||||
if (error) {
|
||||
setMessage(`登录失败:${error.message}`);
|
||||
return;
|
||||
}
|
||||
setMessage("登录成功,准备跳转...");
|
||||
setSessionInfo(JSON.stringify(data.session, null, 2));
|
||||
const session = (data as { session?: unknown } | null)?.session ?? null;
|
||||
setSessionInfo(JSON.stringify(session, null, 2));
|
||||
// 说明:曾出现“需要二次登录”的现象(服务端仍读到旧 cookie/session)。
|
||||
// 这里用整页跳转强制刷新,确保 App Router 的服务端组件读取到最新会话。
|
||||
if (typeof window !== "undefined") {
|
||||
window.location.href = "/";
|
||||
return;
|
||||
}
|
||||
router.replace("/");
|
||||
}, [email, password, router]);
|
||||
|
||||
const handleGetSession = useCallback(async () => {
|
||||
setLoading(true);
|
||||
const supabaseBrowser = getSupabaseBrowserClient();
|
||||
const {
|
||||
data: { session },
|
||||
error,
|
||||
|
||||
Reference in New Issue
Block a user