From 54388e4d8fd85aa6f4090981e593d6aa79a9bc09 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Mon, 3 Jul 2023 17:05:55 +0200 Subject: [PATCH] prompt when loginsetting, escape prompt when alt --- apps/login/app/(login)/loginname/page.tsx | 7 ++- apps/login/app/(login)/passkey/login/page.tsx | 30 ++-------- apps/login/app/(login)/password/page.tsx | 8 ++- apps/login/app/api/loginname/route.ts | 7 +-- apps/login/app/api/session/route.ts | 9 ++- apps/login/ui/LoginPasskey.tsx | 39 ++++++++++--- apps/login/ui/PasswordForm.tsx | 17 +++++- apps/login/ui/SessionItem.tsx | 3 +- apps/login/ui/UsernameForm.tsx | 55 +++++++++++++++++-- apps/login/utils/session.ts | 4 -- 10 files changed, 122 insertions(+), 57 deletions(-) diff --git a/apps/login/app/(login)/loginname/page.tsx b/apps/login/app/(login)/loginname/page.tsx index c62ce175a10..735ce1854ff 100644 --- a/apps/login/app/(login)/loginname/page.tsx +++ b/apps/login/app/(login)/loginname/page.tsx @@ -7,6 +7,7 @@ export default async function Page({ searchParams: Record; }) { const loginName = searchParams?.loginName; + const submit: boolean = searchParams?.submit === "true"; const loginSettings = await getLoginSettings(server); @@ -15,7 +16,11 @@ export default async function Page({

Welcome back!

Enter your login data.

- + ); } diff --git a/apps/login/app/(login)/passkey/login/page.tsx b/apps/login/app/(login)/passkey/login/page.tsx index 8ce7c51d3d6..e57c5d50f66 100644 --- a/apps/login/app/(login)/passkey/login/page.tsx +++ b/apps/login/app/(login)/passkey/login/page.tsx @@ -3,28 +3,6 @@ import Alert from "#/ui/Alert"; import LoginPasskey from "#/ui/LoginPasskey"; import UserAvatar from "#/ui/UserAvatar"; import { getMostRecentCookieWithLoginname } from "#/utils/cookies"; -// import LoginPasskey from "#/ui/LoginPasskey"; -// import { -// SessionCookie, -// getMostRecentSessionCookie, -// getSessionCookieByLoginName, -// } from "#/utils/cookies"; -// import { setSessionAndUpdateCookie } from "#/utils/session"; -// import { ChallengeKind } from "@zitadel/server"; - -// async function updateSessionAndCookie(loginName: string) { -// return getSessionCookieByLoginName(loginName).then((recent) => { -// console.log(recent.token); -// return setSessionAndUpdateCookie( -// recent.id, -// recent.token, -// recent.loginName, -// undefined, -// "localhost", -// [ChallengeKind.CHALLENGE_KIND_PASSKEY] -// ); -// }); -// } const title = "Authenticate with a passkey"; const description = @@ -35,7 +13,7 @@ export default async function Page({ }: { searchParams: Record; }) { - const { loginName } = searchParams; + const { loginName, altPassword } = searchParams; const sessionFactors = await loadSession(loginName); @@ -68,7 +46,11 @@ export default async function Page({ )} {loginName && ( - + )} ); diff --git a/apps/login/app/(login)/password/page.tsx b/apps/login/app/(login)/password/page.tsx index dbd0bcdc42f..0ea96aa6856 100644 --- a/apps/login/app/(login)/password/page.tsx +++ b/apps/login/app/(login)/password/page.tsx @@ -9,7 +9,7 @@ export default async function Page({ }: { searchParams: Record; }) { - const { loginName } = searchParams; + const { loginName, promptPasswordless, alt } = searchParams; const sessionFactors = await loadSession(loginName); async function loadSession(loginName?: string) { @@ -44,7 +44,11 @@ export default async function Page({ > )} - + ); } diff --git a/apps/login/app/api/loginname/route.ts b/apps/login/app/api/loginname/route.ts index 8c77c65bdd4..1fa251e70d5 100644 --- a/apps/login/app/api/loginname/route.ts +++ b/apps/login/app/api/loginname/route.ts @@ -1,14 +1,9 @@ import { - createSession, getSession, listAuthenticationMethodTypes, server, } from "#/lib/zitadel"; -import { - SessionCookie, - addSessionToCookie, - getSessionCookieById, -} from "#/utils/cookies"; +import { getSessionCookieById } from "#/utils/cookies"; import { createSessionAndUpdateCookie } from "#/utils/session"; import { NextRequest, NextResponse } from "next/server"; diff --git a/apps/login/app/api/session/route.ts b/apps/login/app/api/session/route.ts index 0721e196c2e..668c52940f6 100644 --- a/apps/login/app/api/session/route.ts +++ b/apps/login/app/api/session/route.ts @@ -19,7 +19,14 @@ export async function POST(request: NextRequest) { const domain: string = request.nextUrl.hostname; - return createSessionAndUpdateCookie(loginName, password, domain, undefined); + return createSessionAndUpdateCookie( + loginName, + password, + domain, + undefined + ).then((session) => { + return NextResponse.json(session); + }); } else { return NextResponse.json( { details: "Session could not be created" }, diff --git a/apps/login/ui/LoginPasskey.tsx b/apps/login/ui/LoginPasskey.tsx index 2140161a31a..1dbb247a33e 100644 --- a/apps/login/ui/LoginPasskey.tsx +++ b/apps/login/ui/LoginPasskey.tsx @@ -11,9 +11,14 @@ import { Spinner } from "./Spinner"; type Props = { loginName: string; challenge: Challenges_Passkey; + altPassword: boolean; }; -export default function LoginPasskey({ loginName, challenge }: Props) { +export default function LoginPasskey({ + loginName, + challenge, + altPassword, +}: Props) { const [error, setError] = useState(""); const [publicKey, setPublicKey] = useState(); const [loading, setLoading] = useState(false); @@ -133,7 +138,9 @@ export default function LoginPasskey({ loginName, challenge }: Props) { }, }); console.log(data); - return submitLogin(data); + return submitLogin(data).then(() => { + return router.push(`/accounts`); + }); } else { setLoading(false); setError("An error on retrieving passkey"); @@ -157,13 +164,27 @@ export default function LoginPasskey({ loginName, challenge }: Props) { )}
- + {altPassword ? ( + + ) : ( + + )}