1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-06 00:13:28 +00:00

Disable API call if the expiration date is in the past (#5831)

* Disable API call if the expiration date is in the past

* Updates suggested by Thomas

* fixes

* suggested change from thomas

* removing unused service
This commit is contained in:
cd-bitwarden
2023-08-04 16:22:05 -04:00
committed by GitHub
parent c0810c96cc
commit 5d8be1182a
3 changed files with 26 additions and 3 deletions

View File

@@ -51,6 +51,7 @@ export class AccessTokenCreateDialogComponent implements OnInit {
if (this.formGroup.invalid) {
return;
}
const accessTokenView = new AccessTokenView();
accessTokenView.name = this.formGroup.value.name;
accessTokenView.expireAt = this.formGroup.value.expirationDateControl;

View File

@@ -9,10 +9,13 @@ import {
NG_VALUE_ACCESSOR,
ValidationErrors,
Validator,
ValidatorFn,
Validators,
} from "@angular/forms";
import { Subject, takeUntil } from "rxjs";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
@Component({
selector: "sm-expiration-options",
templateUrl: "./expiration-options.component.html",
@@ -46,10 +49,10 @@ export class ExpirationOptionsComponent
protected form = new FormGroup({
expires: new FormControl("never", [Validators.required]),
expireDateTime: new FormControl("", [Validators.required]),
expireDateTime: new FormControl("", [Validators.required, this.expiresInFutureValidator()]),
});
constructor(private datePipe: DatePipe) {}
constructor(private datePipe: DatePipe, private i18nService: I18nService) {}
async ngOnInit() {
this.form.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {
@@ -74,7 +77,7 @@ export class ExpirationOptionsComponent
validate(control: AbstractControl<any, any>): ValidationErrors {
if (
(this.form.value.expires == "custom" && this.form.value.expireDateTime) ||
(this.form.value.expires == "custom" && !this.form.invalid) ||
this.form.value.expires !== "custom"
) {
return null;
@@ -111,4 +114,20 @@ export class ExpirationOptionsComponent
currentDate.setDate(currentDate.getDate() + Number(this.form.value.expires));
return currentDate;
}
expiresInFutureValidator(): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => {
const enteredDate = new Date(control.value);
if (enteredDate > new Date()) {
return null;
} else {
return {
ValidationError: {
message: this.i18nService.t("expirationDateError"),
},
};
}
};
}
}