Route Buzz Guide login through Sudloh Account
CI / Verify (push) Successful in 3m7s
CI / Build immutable images and deploy (push) Successful in 4m25s

This commit is contained in:
2026-10-05 16:55:38 +07:00 Unverified
parent e2fa1aafb6
commit 6dfa9bbf89
13 changed files with 273 additions and 26 deletions
+34 -1
View File
@@ -32,12 +32,18 @@ export function AccountForm({
nextPath,
verified,
verificationError,
oidcEnabled,
oidcOnly,
oidcError,
}: {
mode: "login" | "register";
siteKey: string;
nextPath: string;
verified?: boolean;
verificationError?: boolean;
oidcEnabled?: boolean;
oidcOnly?: boolean;
oidcError?: string;
}) {
const router = useRouter();
const register = mode === "register";
@@ -52,7 +58,7 @@ export function AccountForm({
const formRef = useRef<HTMLFormElement>(null);
const container = useRef<HTMLDivElement>(null);
const widget = useRef<string | null>(null);
const captcha = process.env.NODE_ENV !== "development";
const captcha = !oidcOnly && process.env.NODE_ENV !== "development";
useEffect(() => () => {
if (profilePreview) URL.revokeObjectURL(profilePreview);
}, [profilePreview]);
@@ -172,12 +178,38 @@ export function AccountForm({
} finally { setBusy(false); }
}
async function signInWithSudloh() {
if (busy) return;
setBusy(true);
setError("");
try {
const errorCallbackURL = `/auth/login?next=${encodeURIComponent(nextPath)}&sudloh=1`;
const result = await authClient.signIn.social({
provider: "sudloh", callbackURL: nextPath, errorCallbackURL,
});
if (result.error) throw new Error("เริ่มเข้าสู่ระบบด้วย Sudloh ไม่สำเร็จ กรุณาลองอีกครั้ง");
} catch {
setError("เริ่มเข้าสู่ระบบด้วย Sudloh ไม่สำเร็จ กรุณาลองอีกครั้ง");
setBusy(false);
}
}
return (
<Card className="w-full max-w-sm">
<CardHeader>
<CardTitle>{register ? "สมัครสมาชิก" : "เข้าสู่ระบบ"}</CardTitle>
</CardHeader>
<CardContent className="flex flex-col gap-4">
{oidcEnabled && <Button type="button" variant="outline" disabled={busy} onClick={() => void signInWithSudloh()}>
ดำเนินการต่อด้วย Sudloh
</Button>}
{oidcError && <Alert variant="destructive"><AlertDescription>
{oidcError === "account_not_linked"
? oidcOnly ? "บัญชีนี้ยังไม่เชื่อมต่อกับ Buzz Guide กรุณาติดต่อผู้ดูแลเพื่อยืนยันตัวตน"
: "มีบัญชี Buzz Guide ที่ใช้อีเมลนี้แล้ว กรุณาเข้าสู่ระบบด้วยอีเมลและเชื่อมต่อ Sudloh จากหน้าโปรไฟล์"
: "เข้าสู่ระบบด้วย Sudloh ไม่สำเร็จ กรุณาลองอีกครั้ง"}
</AlertDescription></Alert>}
{!oidcOnly && <>
{verified && <Alert><AlertDescription>ยืนยันอีเมลแล้ว กรุณาเข้าสู่ระบบ</AlertDescription></Alert>}
{verificationError && <Alert variant="destructive"><AlertDescription>ลิงก์ยืนยันไม่ถูกต้องหรือหมดอายุ กรุณาขอลิงก์ใหม่</AlertDescription></Alert>}
{notice && <Alert><AlertDescription>{notice}</AlertDescription></Alert>}
@@ -279,6 +311,7 @@ export function AccountForm({
<AlertDescription>{error}</AlertDescription>
</Alert>
)}
</>}
</CardContent>
</Card>
);