continue to signin or check after u2f setup

This commit is contained in:
peintnermax
2024-09-19 15:48:11 +02:00
parent ecc4d690fd
commit dca1745435
3 changed files with 29 additions and 16 deletions

View File

@@ -16,8 +16,7 @@ export default async function Page({
}: {
searchParams: Record<string | number | symbol, string | undefined>;
}) {
const { loginName, checkAfter, authRequestId, organization, sessionId } =
searchParams;
const { loginName, authRequestId, organization, sessionId } = searchParams;
const sessionFactors = sessionId
? await loadSessionById(sessionId, organization)

View File

@@ -10,7 +10,7 @@ export default async function Page({
}: {
searchParams: Record<string | number | symbol, string | undefined>;
}) {
const { loginName, organization, authRequestId } = searchParams;
const { loginName, organization, authRequestId, checkAfter } = searchParams;
const sessionFactors = await loadMostRecentSession({
loginName,
@@ -49,9 +49,11 @@ export default async function Page({
{sessionFactors?.id && (
<RegisterU2F
loginName={loginName}
sessionId={sessionFactors.id}
organization={organization}
authRequestId={authRequestId}
checkAfter={checkAfter === "true"}
/>
)}
</div>

View File

@@ -11,15 +11,19 @@ import { Button, ButtonVariants } from "./Button";
import { Spinner } from "./Spinner";
type Props = {
loginName?: string;
sessionId: string;
authRequestId?: string;
organization?: string;
checkAfter: boolean;
};
export default function RegisterU2F({
loginName,
sessionId,
organization,
authRequestId,
checkAfter,
}: Props) {
const [error, setError] = useState<string>("");
@@ -140,23 +144,31 @@ export default function RegisterU2F({
return;
}
const params = new URLSearchParams();
const paramsToContinue = new URLSearchParams({});
let urlToContinue = "/accounts";
if (organization) {
params.set("organization", organization);
if (sessionId) {
paramsToContinue.append("sessionId", sessionId);
}
// redirect to verify or sign in
if (authRequestId) {
params.set("authRequestId", authRequestId);
params.set("sessionId", sessionId);
// params.set("altPassword", ${false}); // without setting altPassword this does not allow password
// params.set("loginName", resp.loginName);
router.push("/u2f?" + params);
} else {
router.push("/accounts?" + params);
paramsToContinue.append("authRequestId", authRequestId);
}
if (loginName) {
paramsToContinue.append("loginName", loginName);
}
if (organization) {
paramsToContinue.append("organization", organization);
}
if (checkAfter) {
urlToContinue = `/u2f?` + paramsToContinue;
} else if (authRequestId && sessionId) {
urlToContinue = `/login?` + paramsToContinue;
} else if (loginName) {
urlToContinue = `/signedin?` + paramsToContinue;
}
router.push(urlToContinue);
}
setLoading(false);