From 2e6f0f4166e2215cf49b3f7230b30bf953e94dac Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Tue, 14 Sep 2021 13:36:34 +0200 Subject: [PATCH] Vault Timeout Policy (#2048) --- jslib | 2 +- src/_locales/en/messages.json | 24 ++++++++- src/background/main.background.ts | 2 +- src/popup/app.module.ts | 2 + src/popup/scss/box.scss | 7 +++ src/popup/scss/grid.scss | 11 ++++ src/popup/scss/popup.scss | 1 + src/popup/settings/settings.component.html | 8 +-- src/popup/settings/settings.component.ts | 50 ++++++++++++------- .../vault-timeout-input.component.html | 29 +++++++++++ .../settings/vault-timeout-input.component.ts | 28 +++++++++++ 11 files changed, 135 insertions(+), 29 deletions(-) create mode 100644 src/popup/scss/grid.scss create mode 100644 src/popup/settings/vault-timeout-input.component.html create mode 100644 src/popup/settings/vault-timeout-input.component.ts diff --git a/jslib b/jslib index 5f64d956520..a85c45a34ed 160000 --- a/jslib +++ b/jslib @@ -1 +1 @@ -Subproject commit 5f64d956520612a681611a27c5f4f2e5f27b640e +Subproject commit a85c45a34ed90b09f59ec27bdba754d66452915e diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index d5cfc737c0c..1a3296d2e15 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -1764,7 +1764,7 @@ }, "updateMasterPasswordWarning": { "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." - }, + }, "resetPasswordPolicyAutoEnroll": { "message": "Automatic Enrollment" }, @@ -1776,5 +1776,27 @@ }, "ssoCompleteRegistration": { "message": "In order to complete logging in with SSO, please set a master password to access and protect your vault." + }, + "hours": { + "message": "Hours" + }, + "minutes": { + "message": "Minutes" + }, + "vaultTimeoutPolicyInEffect": { + "message": "Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is $HOURS$ hour(s) and $MINUTES$ minute(s)", + "placeholders": { + "hours": { + "content": "$1", + "example": "5" + }, + "minutes": { + "content": "$2", + "example": "5" + } + } + }, + "vaultTimeoutToLarge": { + "message": "Your vault timeout exceeds the restrictions set by your organization." } } diff --git a/src/background/main.background.ts b/src/background/main.background.ts index f987591ca7e..5ecd2bf83ad 100644 --- a/src/background/main.background.ts +++ b/src/background/main.background.ts @@ -197,7 +197,7 @@ export default class MainBackground { this.policyService = new PolicyService(this.userService, this.storageService); this.vaultTimeoutService = new VaultTimeoutService(this.cipherService, this.folderService, this.collectionService, this.cryptoService, this.platformUtilsService, this.storageService, - this.messagingService, this.searchService, this.userService, this.tokenService, + this.messagingService, this.searchService, this.userService, this.tokenService, this.policyService, async () => { if (this.notificationsService != null) { this.notificationsService.updateConnection(false); diff --git a/src/popup/app.module.ts b/src/popup/app.module.ts index 9702c567318..12ac3f20db5 100644 --- a/src/popup/app.module.ts +++ b/src/popup/app.module.ts @@ -37,6 +37,7 @@ import { OptionsComponent } from './settings/options.component'; import { PremiumComponent } from './settings/premium.component'; import { SettingsComponent } from './settings/settings.component'; import { SyncComponent } from './settings/sync.component'; +import { VaultTimeoutInputComponent } from './settings/vault-timeout-input.component'; import { AddEditComponent } from './vault/add-edit.component'; import { AttachmentsComponent } from './vault/attachments.component'; @@ -242,6 +243,7 @@ registerLocaleData(localeZhTw, 'zh-TW'); UpdateTempPasswordComponent, ViewComponent, PasswordRepromptComponent, + VaultTimeoutInputComponent, ], entryComponents: [], providers: [ diff --git a/src/popup/scss/box.scss b/src/popup/scss/box.scss index c11651c49b0..2bf1c5078bd 100644 --- a/src/popup/scss/box.scss +++ b/src/popup/scss/box.scss @@ -200,6 +200,13 @@ } } + &.last:last-child:before { + border-bottom: 1px solid #000000; + @include themify($themes) { + border-bottom-color: themed('boxBorderColor'); + } + } + &:after { content: ""; display: table; diff --git a/src/popup/scss/grid.scss b/src/popup/scss/grid.scss new file mode 100644 index 00000000000..b053bf8ad79 --- /dev/null +++ b/src/popup/scss/grid.scss @@ -0,0 +1,11 @@ +.row { + display: flex; + margin: 0 -15px; + width: 100%; +} + +.col { + flex-basis: 0; + flex-grow: 1; + padding: 0 15px; +} diff --git a/src/popup/scss/popup.scss b/src/popup/scss/popup.scss index ddeab56523d..9344ccd0388 100644 --- a/src/popup/scss/popup.scss +++ b/src/popup/scss/popup.scss @@ -1,6 +1,7 @@ @import "../css/webfonts.css"; @import "variables.scss"; @import "base.scss"; +@import "grid.scss"; @import "box.scss"; @import "buttons.scss"; @import "misc.scss"; diff --git a/src/popup/settings/settings.component.html b/src/popup/settings/settings.component.html index dca4e801345..fbdfe5dc188 100644 --- a/src/popup/settings/settings.component.html +++ b/src/popup/settings/settings.component.html @@ -28,13 +28,7 @@
{{'security' | i18n}}
-
- - -
+
+ + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
diff --git a/src/popup/settings/vault-timeout-input.component.ts b/src/popup/settings/vault-timeout-input.component.ts new file mode 100644 index 00000000000..47335e51c46 --- /dev/null +++ b/src/popup/settings/vault-timeout-input.component.ts @@ -0,0 +1,28 @@ +import { Component } from '@angular/core'; +import { + NG_VALIDATORS, + NG_VALUE_ACCESSOR, +} from '@angular/forms'; + +import { + VaultTimeoutInputComponent as VaultTimeoutInputComponentBase +} from 'jslib-angular/components/settings/vault-timeout-input.component'; + +@Component({ + selector: 'app-vault-timeout-input', + templateUrl: 'vault-timeout-input.component.html', + providers: [ + { + provide: NG_VALUE_ACCESSOR, + multi: true, + useExisting: VaultTimeoutInputComponent, + }, + { + provide: NG_VALIDATORS, + multi: true, + useExisting: VaultTimeoutInputComponent, + }, + ], +}) +export class VaultTimeoutInputComponent extends VaultTimeoutInputComponentBase { +}