This commit is contained in:
Max Peintner
2024-11-18 10:27:39 +01:00
parent 72f35d9c65
commit 98391c1dd0
5 changed files with 71 additions and 111 deletions

View File

@@ -1,5 +1,6 @@
"use client";
import { finishFlow } from "@/lib/login";
import { updateSession } from "@/lib/server/session";
import { create } from "@zitadel/client";
import { RequestChallengesSchema } from "@zitadel/proto/zitadel/session/v2/challenge_pb";
@@ -154,40 +155,18 @@ export function LoginOTP({
function setCodeAndContinue(values: Inputs, organization?: string) {
return submitCode(values, organization).then((response) => {
if (response) {
if (authRequestId && response && response.sessionId) {
const params = new URLSearchParams({
sessionId: response.sessionId,
authRequest: authRequestId,
});
if (organization) {
params.append("organization", organization);
}
if (authRequestId) {
params.append("authRequest", authRequestId);
}
if (sessionId) {
params.append("sessionId", sessionId);
}
return router.push(`/login?` + params);
} else {
const params = new URLSearchParams();
if (response?.factors?.user?.loginName) {
params.append("loginName", response.factors.user.loginName);
}
if (authRequestId) {
params.append("authRequestId", authRequestId);
}
if (organization) {
params.append("organization", organization);
}
return router.push(`/signedin?` + params);
}
return authRequestId && response.sessionId
? finishFlow({
sessionId: response.sessionId,
authRequestId: authRequestId,
organization: response.factors?.user?.organizationId,
})
: response.factors?.user
? finishFlow({
loginName: response.factors.user.loginName,
organization: response.factors?.user?.organizationId,
})
: null;
}
});
}

View File

@@ -1,6 +1,7 @@
"use client";
import { coerceToArrayBuffer, coerceToBase64Url } from "@/helpers/base64";
import { finishFlow } from "@/lib/login";
import { updateSession } from "@/lib/server/session";
import { create } from "@zitadel/client";
import {
@@ -176,26 +177,18 @@ export function LoginPasskey({
};
return submitLogin(data).then((resp) => {
if (authRequestId && resp && resp.sessionId) {
return router.push(
`/login?` +
new URLSearchParams({
sessionId: resp.sessionId,
authRequest: authRequestId,
}),
);
} else {
const params = new URLSearchParams({});
if (authRequestId) {
params.set("authRequestId", authRequestId);
}
if (resp?.factors?.user?.loginName) {
params.set("loginName", resp.factors.user.loginName);
}
return router.push(`/signedin?` + params);
}
return authRequestId && resp?.sessionId
? finishFlow({
sessionId: resp.sessionId,
authRequestId: authRequestId,
organization: organization,
})
: resp?.factors?.user?.loginName
? finishFlow({
loginName: resp.factors.user.loginName,
organization: organization,
})
: null;
});
});
}

View File

@@ -1,6 +1,7 @@
"use client";
import { coerceToArrayBuffer, coerceToBase64Url } from "@/helpers/base64";
import { finishFlow } from "@/lib/login";
import { addU2F, verifyU2F } from "@/lib/server/u2f";
import { RegisterU2FResponse } from "@zitadel/proto/zitadel/user/v2/user_service_pb";
import { useTranslations } from "next-intl";
@@ -62,7 +63,7 @@ export function RegisterU2f({
return response;
}
async function submitRegisterAndContinue(): Promise<boolean | void> {
async function submitRegisterAndContinue(): Promise<boolean | void | null> {
setError("");
setLoading(true);
const response = await addU2F({
@@ -146,38 +147,37 @@ export function RegisterU2f({
return;
}
const paramsToContinue = new URLSearchParams({});
let urlToContinue = "/accounts";
if (sessionId) {
paramsToContinue.append("sessionId", sessionId);
}
if (loginName) {
paramsToContinue.append("loginName", loginName);
}
if (organization) {
paramsToContinue.append("organization", organization);
}
if (checkAfter) {
if (authRequestId) {
paramsToContinue.append("authRequestId", authRequestId);
}
urlToContinue = `/u2f?` + paramsToContinue;
} else if (authRequestId && sessionId) {
if (authRequestId) {
paramsToContinue.append("authRequest", authRequestId);
}
urlToContinue = `/login?` + paramsToContinue;
} else if (loginName) {
if (authRequestId) {
paramsToContinue.append("authRequestId", authRequestId);
}
urlToContinue = `/signedin?` + paramsToContinue;
}
const paramsToContinue = new URLSearchParams({});
router.push(urlToContinue);
if (sessionId) {
paramsToContinue.append("sessionId", sessionId);
}
if (loginName) {
paramsToContinue.append("loginName", loginName);
}
if (organization) {
paramsToContinue.append("organization", organization);
}
if (authRequestId) {
paramsToContinue.append("authRequestId", authRequestId);
}
return router.push(`/u2f?` + paramsToContinue);
} else {
return authRequestId && sessionId
? finishFlow({
sessionId: sessionId,
authRequestId: authRequestId,
organization: organization,
})
: loginName
? finishFlow({
loginName: loginName,
organization: organization,
})
: null;
}
}
}

View File

@@ -1,4 +1,5 @@
"use client";
import { finishFlow } from "@/lib/login";
import { verifyTOTP } from "@/lib/server-actions";
import { useTranslations } from "next-intl";
import Link from "next/link";
@@ -67,31 +68,18 @@ export function TotpRegister({
return router.push(`/otp/time-based?` + params);
} else {
if (authRequestId && sessionId) {
const params = new URLSearchParams({
sessionId: sessionId,
authRequest: authRequestId,
});
if (organization) {
params.append("organization", organization);
}
return router.push(`/login?` + params);
} else if (loginName) {
const params = new URLSearchParams({
loginName,
});
if (authRequestId) {
params.append("authRequestId", authRequestId);
}
if (organization) {
params.append("organization", organization);
}
return router.push(`/signedin?` + params);
}
return authRequestId && sessionId
? finishFlow({
sessionId: sessionId,
authRequestId: authRequestId,
organization: organization,
})
: loginName
? finishFlow({
loginName: loginName,
organization: organization,
})
: null;
}
})
.catch((e) => {

View File

@@ -8,7 +8,7 @@ type FinishFlowCommand =
| { loginName: string };
/**
* redirects user back to OIDC application or to a success page
* on client: redirects user back to OIDC application or to a success page
* @param command
* @returns
*/