From 41ff51116565ab62d1f4731cd0f9b13a3968a35f Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 28 Aug 2018 23:17:58 -0400 Subject: [PATCH] user canAccessPremium checks --- jslib | 2 +- .../settings/two-factor-setup.component.ts | 6 +++--- .../organizations/vault/add-edit.component.ts | 6 +++--- src/app/settings/two-factor-setup.component.html | 4 ++-- src/app/settings/two-factor-setup.component.ts | 11 +++++------ src/app/settings/user-billing.component.ts | 3 +-- src/app/vault/add-edit.component.html | 2 +- src/app/vault/add-edit.component.ts | 13 ++++++------- src/app/vault/vault.component.ts | 16 +++------------- 9 files changed, 25 insertions(+), 38 deletions(-) diff --git a/jslib b/jslib index 45da8aa9eb..81c21418ec 160000 --- a/jslib +++ b/jslib @@ -1 +1 @@ -Subproject commit 45da8aa9eb4dd7e12c9fa67ed09189bc4d5ed2f1 +Subproject commit 81c21418ec965221b4d322008f9da0ab7b9037d0 diff --git a/src/app/organizations/settings/two-factor-setup.component.ts b/src/app/organizations/settings/two-factor-setup.component.ts index 65342facb0..f16860704f 100644 --- a/src/app/organizations/settings/two-factor-setup.component.ts +++ b/src/app/organizations/settings/two-factor-setup.component.ts @@ -6,7 +6,7 @@ import { ActivatedRoute } from '@angular/router'; import { ApiService } from 'jslib/abstractions/api.service'; import { MessagingService } from 'jslib/abstractions/messaging.service'; -import { TokenService } from 'jslib/abstractions/token.service'; +import { UserService } from 'jslib/abstractions/user.service'; import { TwoFactorProviderType } from 'jslib/enums/twoFactorProviderType'; @@ -18,10 +18,10 @@ import { TwoFactorSetupComponent as BaseTwoFactorSetupComponent } from '../../se templateUrl: '../../settings/two-factor-setup.component.html', }) export class TwoFactorSetupComponent extends BaseTwoFactorSetupComponent { - constructor(apiService: ApiService, tokenService: TokenService, + constructor(apiService: ApiService, userService: UserService, componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService, private route: ActivatedRoute) { - super(apiService, tokenService, componentFactoryResolver, messagingService); + super(apiService, userService, componentFactoryResolver, messagingService); } async ngOnInit() { diff --git a/src/app/organizations/vault/add-edit.component.ts b/src/app/organizations/vault/add-edit.component.ts index e38a290d25..7bd0e0c330 100644 --- a/src/app/organizations/vault/add-edit.component.ts +++ b/src/app/organizations/vault/add-edit.component.ts @@ -15,8 +15,8 @@ import { MessagingService } from 'jslib/abstractions/messaging.service'; import { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service'; import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; import { StateService } from 'jslib/abstractions/state.service'; -import { TokenService } from 'jslib/abstractions/token.service'; import { TotpService } from 'jslib/abstractions/totp.service'; +import { UserService } from 'jslib/abstractions/user.service'; import { CipherData } from 'jslib/models/data/cipherData'; import { Cipher } from 'jslib/models/domain/cipher'; @@ -37,11 +37,11 @@ export class AddEditComponent extends BaseAddEditComponent implements OnInit { i18nService: I18nService, platformUtilsService: PlatformUtilsService, analytics: Angulartics2, toasterService: ToasterService, auditService: AuditService, stateService: StateService, - tokenService: TokenService, totpService: TotpService, + userService: UserService, totpService: TotpService, passwordGenerationService: PasswordGenerationService, private apiService: ApiService, messagingService: MessagingService) { super(cipherService, folderService, i18nService, platformUtilsService, analytics, - toasterService, auditService, stateService, tokenService, totpService, passwordGenerationService, + toasterService, auditService, stateService, userService, totpService, passwordGenerationService, messagingService); } diff --git a/src/app/settings/two-factor-setup.component.html b/src/app/settings/two-factor-setup.component.html index ce331a62b9..4751eede23 100644 --- a/src/app/settings/two-factor-setup.component.html +++ b/src/app/settings/two-factor-setup.component.html @@ -22,14 +22,14 @@

{{p.name}} - + {{'premium' | i18n}}

{{p.description}}
-
diff --git a/src/app/settings/two-factor-setup.component.ts b/src/app/settings/two-factor-setup.component.ts index e16c1ca72a..7d3730fcad 100644 --- a/src/app/settings/two-factor-setup.component.ts +++ b/src/app/settings/two-factor-setup.component.ts @@ -9,7 +9,7 @@ import { import { ApiService } from 'jslib/abstractions/api.service'; import { MessagingService } from 'jslib/abstractions/messaging.service'; -import { TokenService } from 'jslib/abstractions/token.service'; +import { UserService } from 'jslib/abstractions/user.service'; import { TwoFactorProviders } from 'jslib/services/auth.service'; @@ -38,16 +38,16 @@ export class TwoFactorSetupComponent implements OnInit { organizationId: string; providers: any[] = []; - premium: boolean; + canAccessPremium: boolean; loading = true; private modal: ModalComponent = null; - constructor(protected apiService: ApiService, protected tokenService: TokenService, + constructor(protected apiService: ApiService, protected userService: UserService, protected componentFactoryResolver: ComponentFactoryResolver, protected messagingService: MessagingService) { } async ngOnInit() { - this.premium = this.tokenService.getPremium(); + this.canAccessPremium = await this.userService.canAccessPremium(); for (const key in TwoFactorProviders) { if (!TwoFactorProviders.hasOwnProperty(key)) { @@ -128,8 +128,7 @@ export class TwoFactorSetupComponent implements OnInit { } async premiumRequired() { - const premium = await this.tokenService.getPremium(); - if (!premium) { + if (!this.canAccessPremium) { this.messagingService.send('premiumRequired'); return; } diff --git a/src/app/settings/user-billing.component.ts b/src/app/settings/user-billing.component.ts index e66c5fa495..c2f5e4828c 100644 --- a/src/app/settings/user-billing.component.ts +++ b/src/app/settings/user-billing.component.ts @@ -51,8 +51,7 @@ export class UserBillingComponent implements OnInit { return; } - const premium = this.tokenService.getPremium(); - if (premium) { + if (this.tokenService.getPremium()) { this.loading = true; this.billing = await this.apiService.getUserBilling(); } else { diff --git a/src/app/vault/add-edit.component.html b/src/app/vault/add-edit.component.html index cdcb0e4b84..b9364463e7 100644 --- a/src/app/vault/add-edit.component.html +++ b/src/app/vault/add-edit.component.html @@ -80,7 +80,7 @@
- + {{'premium' | i18n}} diff --git a/src/app/vault/add-edit.component.ts b/src/app/vault/add-edit.component.ts index c10c178bbe..05a7ed5206 100644 --- a/src/app/vault/add-edit.component.ts +++ b/src/app/vault/add-edit.component.ts @@ -16,8 +16,8 @@ import { MessagingService } from 'jslib/abstractions/messaging.service'; import { PasswordGenerationService } from 'jslib/abstractions/passwordGeneration.service'; import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; import { StateService } from 'jslib/abstractions/state.service'; -import { TokenService } from 'jslib/abstractions/token.service'; import { TotpService } from 'jslib/abstractions/totp.service'; +import { UserService } from 'jslib/abstractions/user.service'; import { AddEditComponent as BaseAddEditComponent } from 'jslib/angular/components/add-edit.component'; import { LoginUriView } from 'jslib/models/view/loginUriView'; @@ -27,7 +27,7 @@ import { LoginUriView } from 'jslib/models/view/loginUriView'; templateUrl: 'add-edit.component.html', }) export class AddEditComponent extends BaseAddEditComponent implements OnInit { - isPremium: boolean; + canAccessPremium: boolean; totpCode: string; totpCodeFormatted: string; totpDash: number; @@ -43,7 +43,7 @@ export class AddEditComponent extends BaseAddEditComponent implements OnInit { i18nService: I18nService, platformUtilsService: PlatformUtilsService, analytics: Angulartics2, toasterService: ToasterService, auditService: AuditService, stateService: StateService, - protected tokenService: TokenService, protected totpService: TotpService, + protected userService: UserService, protected totpService: TotpService, protected passwordGenerationService: PasswordGenerationService, protected messagingService: MessagingService) { super(cipherService, folderService, i18nService, platformUtilsService, analytics, toasterService, auditService, stateService); @@ -55,9 +55,9 @@ export class AddEditComponent extends BaseAddEditComponent implements OnInit { this.hasPasswordHistory = this.cipher.hasPasswordHistory; this.cleanUp(); - this.isPremium = this.tokenService.getPremium(); + this.canAccessPremium = await this.userService.canAccessPremium(); if (this.cipher.type === CipherType.Login && this.cipher.login.totp && - (this.cipher.organizationUseTotp || this.isPremium)) { + (this.cipher.organizationUseTotp || this.canAccessPremium)) { await this.totpUpdateCode(); const interval = this.totpService.getTimeInterval(this.cipher.login.totp); await this.totpTick(interval); @@ -102,8 +102,7 @@ export class AddEditComponent extends BaseAddEditComponent implements OnInit { } async premiumRequired() { - const premium = await this.tokenService.getPremium(); - if (!premium) { + if (!this.canAccessPremium) { this.messagingService.send('premiumRequired'); return; } diff --git a/src/app/vault/vault.component.ts b/src/app/vault/vault.component.ts index 8759fedf02..e9d1b9e923 100644 --- a/src/app/vault/vault.component.ts +++ b/src/app/vault/vault.component.ts @@ -90,7 +90,7 @@ export class VaultComponent implements OnInit, OnDestroy { this.showBrowserOutdated = window.navigator.userAgent.indexOf('MSIE') !== -1; const hasEncKey = await this.cryptoService.hasEncKey(); this.showUpdateKey = !hasEncKey; - const isPremium = await this.tokenService.getPremium(); + const canAccessPremium = await this.userService.canAccessPremium(); this.route.queryParams.subscribe(async (params) => { await this.syncService.fullSync(false); @@ -116,8 +116,8 @@ export class VaultComponent implements OnInit, OnDestroy { this.organizationsComponent.load(), ]); - this.showPremiumCallout = !this.showVerifyEmail && !isPremium && - !this.platformUtilsService.isSelfHost() && !(await this.inOrgWithPremium()); + this.showPremiumCallout = !this.showVerifyEmail && !canAccessPremium && + !this.platformUtilsService.isSelfHost(); if (params == null) { this.groupingsComponent.selectedAll = true; @@ -475,14 +475,4 @@ export class VaultComponent implements OnInit, OnDestroy { const url = this.router.createUrlTree(['vault'], { queryParams: queryParams }).toString(); this.location.go(url); } - - private async inOrgWithPremium() { - const orgs = await this.userService.getAllOrganizations(); - for (let i = 0; i < orgs.length; i++) { - if (orgs[i].usersGetPremium) { - return true; - } - } - return false; - } }