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>; searchParams: Record<string | number | symbol, string | undefined>;
}) { }) {
const { loginName, checkAfter, authRequestId, organization, sessionId } = const { loginName, authRequestId, organization, sessionId } = searchParams;
searchParams;
const sessionFactors = sessionId const sessionFactors = sessionId
? await loadSessionById(sessionId, organization) ? await loadSessionById(sessionId, organization)

View File

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

View File

@@ -11,15 +11,19 @@ import { Button, ButtonVariants } from "./Button";
import { Spinner } from "./Spinner"; import { Spinner } from "./Spinner";
type Props = { type Props = {
loginName?: string;
sessionId: string; sessionId: string;
authRequestId?: string; authRequestId?: string;
organization?: string; organization?: string;
checkAfter: boolean;
}; };
export default function RegisterU2F({ export default function RegisterU2F({
loginName,
sessionId, sessionId,
organization, organization,
authRequestId, authRequestId,
checkAfter,
}: Props) { }: Props) {
const [error, setError] = useState<string>(""); const [error, setError] = useState<string>("");
@@ -140,23 +144,31 @@ export default function RegisterU2F({
return; return;
} }
const params = new URLSearchParams(); const paramsToContinue = new URLSearchParams({});
let urlToContinue = "/accounts";
if (organization) { if (sessionId) {
params.set("organization", organization); paramsToContinue.append("sessionId", sessionId);
} }
// redirect to verify or sign in
if (authRequestId) { if (authRequestId) {
params.set("authRequestId", authRequestId); paramsToContinue.append("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);
} }
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); setLoading(false);