mirror of
https://github.com/bitwarden/browser
synced 2025-12-19 01:33:33 +00:00
Changed redirect logic on login and 2fa to use callbacks
This commit is contained in:
@@ -26,6 +26,7 @@ import { flagEnabled } from "../../platform/flags";
|
||||
})
|
||||
export class LoginComponent extends BaseLoginComponent {
|
||||
showPasswordless = false;
|
||||
|
||||
constructor(
|
||||
devicesApiService: DevicesApiServiceAbstraction,
|
||||
appIdService: AppIdService,
|
||||
@@ -66,7 +67,35 @@ export class LoginComponent extends BaseLoginComponent {
|
||||
super.onSuccessfulLogin = async () => {
|
||||
await syncService.fullSync(true);
|
||||
};
|
||||
|
||||
super.successRoute = "/tabs/vault";
|
||||
|
||||
super.onSuccessfulLoginNavigate = async () => {
|
||||
// The `redirectUrl` parameter determines the target route after a successful login.
|
||||
// If provided in the URL's query parameters, the user will be redirected
|
||||
// to the specified path once they are authenticated.
|
||||
this.successRoute = this.route.snapshot.queryParams.redirectUrl
|
||||
? decodeURIComponent(this.route.snapshot.queryParams.redirectUrl)
|
||||
: this.successRoute;
|
||||
|
||||
this.router.navigateByUrl(this.successRoute);
|
||||
};
|
||||
|
||||
super.onSuccessfulLoginTwoFactorNavigate = async () => {
|
||||
// The `redirectUrl` parameter determines the target route after a successful login.
|
||||
// If provided in the URL's query parameters, the user will be redirected
|
||||
// to the specified path once they are authenticated.
|
||||
const redirectUrl = this.route.snapshot.queryParams.redirectUrl
|
||||
? decodeURIComponent(this.route.snapshot.queryParams.redirectUrl)
|
||||
: undefined;
|
||||
|
||||
this.router.navigate([this.twoFactorRoute], {
|
||||
queryParams: {
|
||||
redirectUrl: redirectUrl,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
this.showPasswordless = flagEnabled("showPasswordless");
|
||||
|
||||
if (this.showPasswordless) {
|
||||
|
||||
@@ -32,7 +32,6 @@ const BroadcasterSubscriptionId = "TwoFactorComponent";
|
||||
})
|
||||
export class TwoFactorComponent extends BaseTwoFactorComponent {
|
||||
showNewWindowMessage = false;
|
||||
redirectUrl: string;
|
||||
|
||||
constructor(
|
||||
authService: AuthService,
|
||||
@@ -75,16 +74,6 @@ export class TwoFactorComponent extends BaseTwoFactorComponent {
|
||||
syncService.fullSync(true);
|
||||
};
|
||||
|
||||
super.onSuccessfulLoginNavigate = async () => {
|
||||
// The `redirectUrl` parameter determines the target route after a successful login.
|
||||
// If provided in the URL's query parameters, the user will be redirected
|
||||
// to the specified path once they are authenticated.
|
||||
if (this.route.snapshot.queryParams.redirectUrl) {
|
||||
this.redirectUrl = decodeURIComponent(this.route.snapshot.queryParams.redirectUrl);
|
||||
this.router.navigateByUrl(this.redirectUrl);
|
||||
}
|
||||
};
|
||||
|
||||
super.onSuccessfulLoginTde = async () => {
|
||||
syncService.fullSync(true);
|
||||
};
|
||||
@@ -94,6 +83,18 @@ export class TwoFactorComponent extends BaseTwoFactorComponent {
|
||||
};
|
||||
|
||||
super.successRoute = "/tabs/vault";
|
||||
|
||||
super.onSuccessfulLoginNavigate = async () => {
|
||||
// The `redirectUrl` parameter determines the target route after a successful login.
|
||||
// If provided in the URL's query parameters, the user will be redirected
|
||||
// to the specified path once they are authenticated.
|
||||
this.successRoute = this.route.snapshot.queryParams.redirectUrl
|
||||
? decodeURIComponent(this.route.snapshot.queryParams.redirectUrl)
|
||||
: this.successRoute;
|
||||
|
||||
this.router.navigateByUrl(this.successRoute);
|
||||
};
|
||||
|
||||
// FIXME: Chromium 110 has broken WebAuthn support in extensions via an iframe
|
||||
this.webAuthnNewTab = true;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,6 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit,
|
||||
showLoginWithDevice: boolean;
|
||||
validatedEmail = false;
|
||||
paramEmailSet = false;
|
||||
redirectUrl: string;
|
||||
|
||||
formGroup = this.formBuilder.group({
|
||||
email: ["", [Validators.required, Validators.email]],
|
||||
@@ -119,14 +118,6 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit,
|
||||
}
|
||||
|
||||
async submit(showToast = true) {
|
||||
// The `redirectUrl` parameter determines the target route after a successful login.
|
||||
// If provided in the URL's query parameters, the user will be redirected
|
||||
// to the specified path once they are authenticated.
|
||||
if (this.route.snapshot.queryParams.redirectUrl) {
|
||||
this.redirectUrl = decodeURIComponent(this.route.snapshot.queryParams.redirectUrl);
|
||||
this.successRoute = this.redirectUrl;
|
||||
}
|
||||
|
||||
const data = this.formGroup.value;
|
||||
|
||||
await this.setupCaptcha();
|
||||
@@ -162,11 +153,7 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit,
|
||||
if (this.onSuccessfulLoginTwoFactorNavigate != null) {
|
||||
this.onSuccessfulLoginTwoFactorNavigate();
|
||||
} else {
|
||||
this.router.navigate([this.twoFactorRoute], {
|
||||
queryParams: {
|
||||
redirectUrl: this.redirectUrl,
|
||||
},
|
||||
});
|
||||
this.router.navigate([this.twoFactorRoute]);
|
||||
}
|
||||
} else if (response.forcePasswordReset != ForceResetPasswordReason.None) {
|
||||
if (this.onSuccessfulLoginForceResetNavigate != null) {
|
||||
@@ -181,7 +168,7 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit,
|
||||
if (this.onSuccessfulLoginNavigate != null) {
|
||||
this.onSuccessfulLoginNavigate();
|
||||
} else {
|
||||
this.router.navigateByUrl(this.successRoute);
|
||||
this.router.navigate([this.successRoute]);
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user