mirror of
https://github.com/bitwarden/browser
synced 2025-12-17 16:53:34 +00:00
Initial work
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { Directive, NgZone, OnDestroy, OnInit } from "@angular/core";
|
||||
import { Router } from "@angular/router";
|
||||
import { ActivatedRoute, Router } from "@angular/router";
|
||||
import { firstValueFrom, Subject } from "rxjs";
|
||||
import { concatMap, take, takeUntil } from "rxjs/operators";
|
||||
|
||||
@@ -41,6 +41,8 @@ export class LockComponent implements OnInit, OnDestroy {
|
||||
biometricLock: boolean;
|
||||
biometricText: string;
|
||||
hideInput: boolean;
|
||||
redirectPath: string;
|
||||
sessionId: string;
|
||||
|
||||
protected successRoute = "vault";
|
||||
protected forcePasswordResetRoute = "update-temp-password";
|
||||
@@ -70,10 +72,21 @@ export class LockComponent implements OnInit, OnDestroy {
|
||||
protected policyApiService: PolicyApiServiceAbstraction,
|
||||
protected policyService: InternalPolicyService,
|
||||
protected passwordStrengthService: PasswordStrengthServiceAbstraction,
|
||||
protected dialogService: DialogServiceAbstraction
|
||||
protected dialogService: DialogServiceAbstraction,
|
||||
protected route: ActivatedRoute
|
||||
) {}
|
||||
|
||||
async ngOnInit() {
|
||||
this.route?.queryParams.subscribe((params) => {
|
||||
this.redirectPath = params?.redirectPath;
|
||||
this.sessionId = params?.sessionId;
|
||||
});
|
||||
|
||||
//use redirectPath to redirect to a specific page after successful login
|
||||
if (this.redirectPath) {
|
||||
this.successRoute = this.redirectPath;
|
||||
}
|
||||
|
||||
this.stateService.activeAccount$
|
||||
.pipe(
|
||||
concatMap(async () => {
|
||||
@@ -291,7 +304,11 @@ export class LockComponent implements OnInit, OnDestroy {
|
||||
if (this.onSuccessfulSubmit != null) {
|
||||
await this.onSuccessfulSubmit();
|
||||
} else if (this.router != null) {
|
||||
this.router.navigate([this.successRoute]);
|
||||
this.router.navigate([this.successRoute], {
|
||||
queryParams: {
|
||||
sessionId: this.sessionId,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,8 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit
|
||||
showLoginWithDevice: boolean;
|
||||
validatedEmail = false;
|
||||
paramEmailSet = false;
|
||||
redirectPath: string;
|
||||
sessionId: string;
|
||||
|
||||
formGroup = this.formBuilder.group({
|
||||
email: ["", [Validators.required, Validators.email]],
|
||||
@@ -83,11 +85,17 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit
|
||||
this.route?.queryParams.subscribe((params) => {
|
||||
if (params != null) {
|
||||
const queryParamsEmail = params["email"];
|
||||
this.redirectPath = params?.["redirectPath"];
|
||||
this.sessionId = params?.["sessionId"];
|
||||
if (queryParamsEmail != null && queryParamsEmail.indexOf("@") > -1) {
|
||||
this.formGroup.get("email").setValue(queryParamsEmail);
|
||||
this.loginService.setEmail(queryParamsEmail);
|
||||
this.paramEmailSet = true;
|
||||
}
|
||||
//use redirectPath to redirect to a specific page after successful login
|
||||
if (this.redirectPath) {
|
||||
this.successRoute = this.redirectPath;
|
||||
}
|
||||
}
|
||||
});
|
||||
let email = this.loginService.getEmail();
|
||||
@@ -142,7 +150,12 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit
|
||||
if (this.onSuccessfulLoginTwoFactorNavigate != null) {
|
||||
this.onSuccessfulLoginTwoFactorNavigate();
|
||||
} else {
|
||||
this.router.navigate([this.twoFactorRoute]);
|
||||
this.router.navigate([this.twoFactorRoute], {
|
||||
queryParams: {
|
||||
redirectPath: this.redirectPath,
|
||||
sessionId: this.sessionId,
|
||||
},
|
||||
});
|
||||
}
|
||||
} else if (response.forcePasswordReset != ForceResetPasswordReason.None) {
|
||||
if (this.onSuccessfulLoginForceResetNavigate != null) {
|
||||
|
||||
@@ -39,6 +39,8 @@ export class TwoFactorComponent extends CaptchaProtectedComponent implements OnI
|
||||
formPromise: Promise<any>;
|
||||
emailPromise: Promise<any>;
|
||||
identifier: string = null;
|
||||
redirectPath: string;
|
||||
sessionId: string;
|
||||
onSuccessfulLogin: () => Promise<any>;
|
||||
onSuccessfulLoginNavigate: () => Promise<any>;
|
||||
|
||||
@@ -74,6 +76,15 @@ export class TwoFactorComponent extends CaptchaProtectedComponent implements OnI
|
||||
if (qParams.identifier != null) {
|
||||
this.identifier = qParams.identifier;
|
||||
}
|
||||
|
||||
if (qParams.redirectPath != null) {
|
||||
this.redirectPath = qParams.redirectPath;
|
||||
this.successRoute = this.redirectPath;
|
||||
}
|
||||
|
||||
if (qParams.sessionId != null) {
|
||||
this.sessionId = qParams?.sessionId;
|
||||
}
|
||||
});
|
||||
|
||||
if (this.needsLock) {
|
||||
@@ -220,6 +231,7 @@ export class TwoFactorComponent extends CaptchaProtectedComponent implements OnI
|
||||
this.router.navigate([this.successRoute], {
|
||||
queryParams: {
|
||||
identifier: this.identifier,
|
||||
sessionId: this.sessionId,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user