diff --git a/apps/frontend/app/console/login/components/PasskeyLoginPage.tsx b/apps/frontend/app/console/login/components/PasskeyLoginPage.tsx new file mode 100644 index 0000000..1486d6f --- /dev/null +++ b/apps/frontend/app/console/login/components/PasskeyLoginPage.tsx @@ -0,0 +1,24 @@ +import { AuthAPI } from "@/lib/api/client"; +import LoginHeader from "./LoginHeader"; +import { Button } from "@/components/ui/button"; +import { startAuthentication } from "@simplewebauthn/browser"; + +export default function PasskeyLoginPage() { + return ( + <> + +
+ 还没想好这里放点啥捏~ +
+ + + ) +} + +export async function handleSubmit() { + const optionsJSON = await AuthAPI.getLoginByPasskeyOptions(); + const credentialResponse = await startAuthentication({ optionsJSON }); + return AuthAPI.loginByPasskey(credentialResponse); +} \ No newline at end of file diff --git a/apps/frontend/app/console/login/page.tsx b/apps/frontend/app/console/login/page.tsx index 500c042..11fd96e 100644 --- a/apps/frontend/app/console/login/page.tsx +++ b/apps/frontend/app/console/login/page.tsx @@ -7,7 +7,6 @@ import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; import { cn } from "@/lib/utils"; import { KeyRound, Phone, FileKey2 } from "lucide-react"; -import EmailLoginMode from "./components/EmailLoginMode"; import PasswordLoginMode from "./components/PasswordLoginMode"; import PhoneLoginMode from "./components/SmsLoginMode"; import { useEffect, useState } from "react"; @@ -15,6 +14,7 @@ import LoginBG from './components/login-bg.jpg'; import Image from "next/image"; import { handleAPIError } from "@/lib/api/common"; import { useUserStore } from "@/store/useUserStore"; +import PasskeyLoginPage from "./components/PasskeyLoginPage"; export type SubmitMode = 'password' | 'sms' | 'passkey'; @@ -46,6 +46,8 @@ export default function Login() { return import('./components/PasswordLoginMode'); } else if (loginMode === 'sms') { return import('./components/SmsLoginMode'); + } else if (loginMode === 'passkey') { + return import('./components/PasskeyLoginPage'); } })())?.handleSubmit; if (!handler) { @@ -64,7 +66,7 @@ export default function Login() { {loginMode === 'password' ? : null} {loginMode === 'sms' ? : null} - {/* {loginMode === 'email' ? : null} */} + {loginMode === 'passkey' ? : null}