mirror of
https://github.com/bitwarden/browser
synced 2025-12-14 23:33:31 +00:00
* [EC-19] Refactor existing organization settings components to its own module * [EC-19] Move SSO page to settings tab * [EC-19] Move Policies page to Settings tab Refactor Policy components into its own module * [EC-19] Move ImageSubscriptionHiddenComponent * [EC-19] Lazy load org settings module * [EC-19] Add SSO Id to SSO config view * [EC-19] Remove SSO identfier from org info page * [EC-19] Update org settings/policies to follow ADR-0011 * [EC-19] Update two-step login setup description * [EC-19] Revert nested policy components folder * [EC-19] Revert nested org setting components folder * [EC-19] Remove left over image component * [EC-19] Prettier * [EC-19] Fix missing i18n * [EC-19] Update SSO form to use CL * [EC-19] Remove unused SSO input components * [EC-19] Fix bad SSO locale identifier * [EC-19] Fix import order linting * [EC-19] Add explicit whitespace check for launch click directive * [EC-19] Add restricted import paths to eslint config * [EC-19] Tag deprecated field with Jira issue to cleanup in future release * [EC-19] Remove out of date comment * [EC-19] Move policy components to policies module * [EC-19] Remove dityRequired validator * [EC-19] Use explicit type for SSO config form * [EC-19] Fix rxjs linter errors * [EC-19] Fix RxJS eslint comments in org settings component * [EC-19] Use explicit ControlsOf<T> helper for nested SSO form groups. * [EC-19] Attribute source of ControlsOf<T> helper * [EC-19] Fix missing settings side nav links * [EC-19] Fix member/user language for policy modals
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
import { Component } from "@angular/core";
|
|
import { UntypedFormBuilder } from "@angular/forms";
|
|
|
|
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
|
import { PolicyType } from "@bitwarden/common/enums/policyType";
|
|
import { PolicyRequest } from "@bitwarden/common/models/request/policyRequest";
|
|
|
|
import { BasePolicy, BasePolicyComponent } from "src/app/organizations/policies";
|
|
|
|
export class MaximumVaultTimeoutPolicy extends BasePolicy {
|
|
name = "maximumVaultTimeout";
|
|
description = "maximumVaultTimeoutDesc";
|
|
type = PolicyType.MaximumVaultTimeout;
|
|
component = MaximumVaultTimeoutPolicyComponent;
|
|
}
|
|
|
|
@Component({
|
|
selector: "policy-maximum-timeout",
|
|
templateUrl: "maximum-vault-timeout.component.html",
|
|
})
|
|
export class MaximumVaultTimeoutPolicyComponent extends BasePolicyComponent {
|
|
data = this.formBuilder.group({
|
|
hours: [null],
|
|
minutes: [null],
|
|
});
|
|
|
|
constructor(private formBuilder: UntypedFormBuilder, private i18nService: I18nService) {
|
|
super();
|
|
}
|
|
|
|
loadData() {
|
|
const minutes = this.policyResponse.data?.minutes;
|
|
|
|
if (minutes == null) {
|
|
return;
|
|
}
|
|
|
|
this.data.patchValue({
|
|
hours: Math.floor(minutes / 60),
|
|
minutes: minutes % 60,
|
|
});
|
|
}
|
|
|
|
buildRequestData() {
|
|
if (this.data.value.hours == null && this.data.value.minutes == null) {
|
|
return null;
|
|
}
|
|
|
|
return {
|
|
minutes: this.data.value.hours * 60 + this.data.value.minutes,
|
|
};
|
|
}
|
|
|
|
buildRequest(policiesEnabledMap: Map<PolicyType, boolean>): Promise<PolicyRequest> {
|
|
const singleOrgEnabled = policiesEnabledMap.get(PolicyType.SingleOrg) ?? false;
|
|
if (this.enabled.value && !singleOrgEnabled) {
|
|
throw new Error(this.i18nService.t("requireSsoPolicyReqError"));
|
|
}
|
|
|
|
const data = this.buildRequestData();
|
|
if (data?.minutes == null || data?.minutes <= 0) {
|
|
throw new Error(this.i18nService.t("invalidMaximumVaultTimeout"));
|
|
}
|
|
|
|
return super.buildRequest(policiesEnabledMap);
|
|
}
|
|
}
|