Don't add a history entry for automated client routing redirects
This commit is contained in:
@@ -18,10 +18,14 @@ import { z } from "zod/v4";
|
||||
import { AccountsPageTitleWithCaption } from "./LoginComponents";
|
||||
|
||||
interface LoginContentsProps {
|
||||
/** Called when the user clicks the signup option instead. */
|
||||
onSignUp: () => void;
|
||||
/** Reactive value of {@link customAPIHost}. */
|
||||
/**
|
||||
* Reactive value of {@link customAPIHost}.
|
||||
*/
|
||||
host: string | undefined;
|
||||
/**
|
||||
* Called when the user clicks the signup option instead.
|
||||
*/
|
||||
onSignUp: () => void;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -38,7 +38,7 @@ const Page: React.FC = () => {
|
||||
setUser(user);
|
||||
} else {
|
||||
stashRedirect("/change-password");
|
||||
void router.push("/");
|
||||
void router.replace("/");
|
||||
}
|
||||
}, [router]);
|
||||
|
||||
|
||||
@@ -161,13 +161,13 @@ const Page: React.FC = () => {
|
||||
const user = savedPartialLocalUser();
|
||||
const userEmail = user?.email;
|
||||
if (!userEmail) {
|
||||
void router.push("/");
|
||||
await router.replace("/");
|
||||
return;
|
||||
}
|
||||
|
||||
await updateSessionFromElectronSafeStorageIfNeeded();
|
||||
if ((await masterKeyFromSession()) && (await savedAuthToken())) {
|
||||
void router.push(appHomeRoute);
|
||||
await router.replace(appHomeRoute);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -203,7 +203,7 @@ const Page: React.FC = () => {
|
||||
// TODO(RE): Why? For now, add a dev mode circuit breaker.
|
||||
if (isDevBuild) throw new Error("Unexpected case reached");
|
||||
clearLocalStorage();
|
||||
void router.push("/");
|
||||
void router.replace("/");
|
||||
return;
|
||||
}
|
||||
setKeyAttributes(keyAttributes);
|
||||
@@ -219,7 +219,7 @@ const Page: React.FC = () => {
|
||||
return;
|
||||
}
|
||||
|
||||
void router.push("/");
|
||||
void router.replace("/");
|
||||
})();
|
||||
}, [router, validateSession, postVerification]);
|
||||
|
||||
|
||||
@@ -55,15 +55,15 @@ const Page: React.FC = () => {
|
||||
useEffect(() => {
|
||||
const user = savedPartialLocalUser();
|
||||
if (!user?.email || !user?.token) {
|
||||
void router.push("/");
|
||||
void router.replace("/");
|
||||
} else if (haveMasterKeyInSession()) {
|
||||
if (savedJustSignedUp()) {
|
||||
setOpenRecoveryKey(true);
|
||||
} else {
|
||||
void router.push(appHomeRoute);
|
||||
void router.replace(appHomeRoute);
|
||||
}
|
||||
} else if (savedOriginalKeyAttributes()) {
|
||||
void router.push("/credentials");
|
||||
void router.replace("/credentials");
|
||||
} else {
|
||||
setUserEmail(user.email);
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ const Page: React.FC = () => {
|
||||
|
||||
useEffect(() => {
|
||||
void customAPIHost().then(setHost);
|
||||
if (savedPartialLocalUser()?.email) void router.push("/verify");
|
||||
if (savedPartialLocalUser()?.email) void router.replace("/verify");
|
||||
setLoading(false);
|
||||
}, [router]);
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ const Page: React.FC = () => {
|
||||
if (!passkeySessionID || !response) return;
|
||||
|
||||
void saveQueryCredentialsAndNavigateTo(passkeySessionID, response).then(
|
||||
(slug) => router.push(slug),
|
||||
(slug) => router.replace(slug),
|
||||
);
|
||||
}, [router]);
|
||||
|
||||
|
||||
@@ -46,22 +46,22 @@ const Page: React.FC = () => {
|
||||
void (async () => {
|
||||
const user = savedPartialLocalUser();
|
||||
if (!user?.email) {
|
||||
await router.push("/");
|
||||
await router.replace("/");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!user.encryptedToken && !user.token) {
|
||||
await sendOTT(user.email, undefined);
|
||||
stashRedirect("/recover");
|
||||
await router.push("/verify");
|
||||
await router.replace("/verify");
|
||||
return;
|
||||
}
|
||||
|
||||
const keyAttributes = savedKeyAttributes();
|
||||
if (!keyAttributes) {
|
||||
await router.push("/generate");
|
||||
await router.replace("/generate");
|
||||
} else if (haveMasterKeyInSession()) {
|
||||
await router.push(appHomeRoute);
|
||||
await router.replace(appHomeRoute);
|
||||
} else {
|
||||
setKeyAttributes(keyAttributes);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ const Page: React.FC = () => {
|
||||
|
||||
useEffect(() => {
|
||||
void customAPIHost().then(setHost);
|
||||
if (savedPartialLocalUser()?.email) void router.push("/verify");
|
||||
if (savedPartialLocalUser()?.email) void router.replace("/verify");
|
||||
setLoading(false);
|
||||
}, [router]);
|
||||
|
||||
|
||||
@@ -71,9 +71,9 @@ const Page: React.FC<RecoverPageProps> = ({ twoFactorType }) => {
|
||||
? user?.passkeySessionID
|
||||
: user?.twoFactorSessionID;
|
||||
if (!user?.email || !sessionID) {
|
||||
await router.push("/");
|
||||
await router.replace("/");
|
||||
} else if (user.encryptedToken || user.token) {
|
||||
await router.push("/generate");
|
||||
await router.replace("/generate");
|
||||
} else {
|
||||
setSessionID(sessionID);
|
||||
try {
|
||||
|
||||
@@ -36,12 +36,12 @@ const Page: React.FC = () => {
|
||||
useEffect(() => {
|
||||
const user = savedPartialLocalUser();
|
||||
if (!user?.email || !user.twoFactorSessionID) {
|
||||
void router.push("/");
|
||||
void router.replace("/");
|
||||
} else if (
|
||||
!user.isTwoFactorEnabled &&
|
||||
(user.encryptedToken || user.token)
|
||||
) {
|
||||
void router.push("/credentials");
|
||||
void router.replace("/credentials");
|
||||
} else {
|
||||
setTwoFactorSessionID(user.twoFactorSessionID);
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ const Page: React.FC = () => {
|
||||
useEffect(() => {
|
||||
void redirectionIfNeededOrEmail().then((redirectOrEmail) => {
|
||||
if (typeof redirectOrEmail == "string") {
|
||||
void router.push(redirectOrEmail);
|
||||
void router.replace(redirectOrEmail);
|
||||
} else {
|
||||
setEmail(redirectOrEmail.email);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user