From 3b2b37b3b0616e8e209c35f47e48b1e6cf4a1ec0 Mon Sep 17 00:00:00 2001 From: Thomas Rittson <31796059+eliykat@users.noreply.github.com> Date: Thu, 15 Apr 2021 14:54:58 +1000 Subject: [PATCH] Use UserService to manage emailVerified (#1367) --- src/App/Pages/Send/SendAddEditPageViewModel.cs | 4 +--- src/Core/Abstractions/IUserService.cs | 2 ++ src/Core/Services/SyncService.cs | 1 + src/Core/Services/UserService.cs | 17 +++++++++++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/App/Pages/Send/SendAddEditPageViewModel.cs b/src/App/Pages/Send/SendAddEditPageViewModel.cs index 332456f5b..41f3bb354 100644 --- a/src/App/Pages/Send/SendAddEditPageViewModel.cs +++ b/src/App/Pages/Send/SendAddEditPageViewModel.cs @@ -21,7 +21,6 @@ namespace Bit.App.Pages private readonly IMessagingService _messagingService; private readonly IUserService _userService; private readonly ISendService _sendService; - private readonly ITokenService _tokenService; private bool _sendEnabled; private bool _canAccessPremium; private bool _emailVerified; @@ -55,7 +54,6 @@ namespace Bit.App.Pages _messagingService = ServiceContainer.Resolve("messagingService"); _userService = ServiceContainer.Resolve("userService"); _sendService = ServiceContainer.Resolve("sendService"); - _tokenService = ServiceContainer.Resolve("tokenService"); TogglePasswordCommand = new Command(TogglePassword); TypeOptions = new List> @@ -224,7 +222,7 @@ namespace Bit.App.Pages { PageTitle = EditMode ? AppResources.EditSend : AppResources.AddSend; _canAccessPremium = await _userService.CanAccessPremiumAsync(); - _emailVerified = _tokenService.GetEmailVerified(); + _emailVerified = await _userService.GetEmailVerifiedAsync(); SendEnabled = ! await AppHelpers.IsSendDisabledByPolicyAsync(); DisableHideEmail = await AppHelpers.IsHideEmailDisabledByPolicyAsync(); SendOptionsPolicyInEffect = SendEnabled && DisableHideEmail; diff --git a/src/Core/Abstractions/IUserService.cs b/src/Core/Abstractions/IUserService.cs index 076a612b2..fd640569d 100644 --- a/src/Core/Abstractions/IUserService.cs +++ b/src/Core/Abstractions/IUserService.cs @@ -17,10 +17,12 @@ namespace Bit.Core.Abstractions Task GetKdfIterationsAsync(); Task GetOrganizationAsync(string id); Task GetSecurityStampAsync(); + Task GetEmailVerifiedAsync(); Task GetUserIdAsync(); Task IsAuthenticatedAsync(); Task ReplaceOrganizationsAsync(Dictionary organizations); Task SetInformationAsync(string userId, string email, KdfType kdf, int? kdfIterations); Task SetSecurityStampAsync(string stamp); + Task SetEmailVerifiedAsync(bool emailVerified); } } diff --git a/src/Core/Services/SyncService.cs b/src/Core/Services/SyncService.cs index 408ab05eb..b90716bac 100644 --- a/src/Core/Services/SyncService.cs +++ b/src/Core/Services/SyncService.cs @@ -327,6 +327,7 @@ namespace Bit.Core.Services await _userService.SetSecurityStampAsync(response.SecurityStamp); var organizations = response.Organizations.ToDictionary(o => o.Id, o => new OrganizationData(o)); await _userService.ReplaceOrganizationsAsync(organizations); + await _userService.SetEmailVerifiedAsync(response.EmailVerified); } private async Task SyncFoldersAsync(string userId, List response) diff --git a/src/Core/Services/UserService.cs b/src/Core/Services/UserService.cs index d1e844f6f..d59c07325 100644 --- a/src/Core/Services/UserService.cs +++ b/src/Core/Services/UserService.cs @@ -15,6 +15,7 @@ namespace Bit.Core.Services private string _stamp; private KdfType? _kdf; private int? _kdfIterations; + private bool? _emailVerified; private const string Keys_UserId = "userId"; private const string Keys_UserEmail = "userEmail"; @@ -22,6 +23,7 @@ namespace Bit.Core.Services private const string Keys_Kdf = "kdf"; private const string Keys_KdfIterations = "kdfIterations"; private const string Keys_OrganizationsFormat = "organizations_{0}"; + private const string Keys_EmailVerified = "emailVerified"; private readonly IStorageService _storageService; private readonly ITokenService _tokenService; @@ -51,6 +53,12 @@ namespace Bit.Core.Services await _storageService.SaveAsync(Keys_Stamp, stamp); } + public async Task SetEmailVerifiedAsync(bool emailVerified) + { + _emailVerified = emailVerified; + await _storageService.SaveAsync(Keys_EmailVerified, emailVerified); + } + public async Task GetUserIdAsync() { if (_userId == null) @@ -78,6 +86,15 @@ namespace Bit.Core.Services return _stamp; } + public async Task GetEmailVerifiedAsync() + { + if (_emailVerified == null) + { + _emailVerified = await _storageService.GetAsync(Keys_EmailVerified); + } + return _emailVerified.GetValueOrDefault(); + } + public async Task GetKdfAsync() { if (_kdf == null)