diff --git a/common/ASC.Core.Common/Notify/Signalr/SignalrServiceClient.cs b/common/ASC.Core.Common/Notify/Signalr/SignalrServiceClient.cs index 0c2ea1b101..e071d09079 100644 --- a/common/ASC.Core.Common/Notify/Signalr/SignalrServiceClient.cs +++ b/common/ASC.Core.Common/Notify/Signalr/SignalrServiceClient.cs @@ -48,7 +48,7 @@ namespace ASC.Core.Notify.Signalr { internal TenantManager TenantManager { get; } internal CoreSettings CoreSettings { get; } - public MachinePseudoKeys MachinePseudoKeys { get; } + internal MachinePseudoKeys MachinePseudoKeys { get; } internal IConfiguration Configuration { get; } internal IOptionsMonitor Options { get; } @@ -405,7 +405,8 @@ namespace ASC.Core.Notify.Signalr return services .AddTenantManagerService() - .AddCoreSettingsService(); + .AddCoreSettingsService() + .AddMachinePseudoKeysService(); } return services; diff --git a/common/ASC.Core.Common/Security/EmailValidationKeyProvider.cs b/common/ASC.Core.Common/Security/EmailValidationKeyProvider.cs index ba09fdb590..75be793326 100644 --- a/common/ASC.Core.Common/Security/EmailValidationKeyProvider.cs +++ b/common/ASC.Core.Common/Security/EmailValidationKeyProvider.cs @@ -263,12 +263,17 @@ namespace ASC.Security.Cryptography public static class EmailValidationKeyProviderExtension { public static DIHelper AddEmailValidationKeyProviderService(this DIHelper services) - { - services.TryAddTransient(); - services.TryAddScoped(); - - return services - .AddTenantManagerService(); + { + if (services.TryAddScoped()) + { + services.TryAddTransient(); + + return services + .AddTenantManagerService() + .AddMachinePseudoKeysService(); + } + + return services; } } } \ No newline at end of file diff --git a/products/ASC.Files/Core/Core/Entries/EncryptionKeyPair.cs b/products/ASC.Files/Core/Core/Entries/EncryptionKeyPair.cs index 8054f73083..187613d37a 100644 --- a/products/ASC.Files/Core/Core/Entries/EncryptionKeyPair.cs +++ b/products/ASC.Files/Core/Core/Entries/EncryptionKeyPair.cs @@ -39,29 +39,26 @@ namespace ASC.Web.Files.Core.Entries public Guid UserId { get; set; } } - public class EncryptionKeyPairHelper + public class EncryptionKeyPairHelper { private UserManager UserManager { get; } private AuthContext AuthContext { get; } private EncryptionLoginProvider EncryptionLoginProvider { get; } private FileSecurity FileSecurity { get; } private IDaoFactory DaoFactory { get; } - private FileStorageService FileStorageService { get; } public EncryptionKeyPairHelper( UserManager userManager, AuthContext authContext, EncryptionLoginProvider encryptionLoginProvider, FileSecurity fileSecurity, - IDaoFactory daoFactory, - FileStorageService fileStorageService) + IDaoFactory daoFactory) { UserManager = userManager; AuthContext = authContext; EncryptionLoginProvider = encryptionLoginProvider; FileSecurity = fileSecurity; DaoFactory = daoFactory; - FileStorageService = fileStorageService; } public void SetKeyPair(string publicKey, string privateKeyEnc) @@ -93,7 +90,7 @@ namespace ASC.Web.Files.Core.Entries return keyPair; } - public IEnumerable GetKeyPair(T fileId) + public IEnumerable GetKeyPair(T fileId, FileStorageService FileStorageService) { var fileDao = DaoFactory.GetFileDao(); @@ -131,16 +128,14 @@ namespace ASC.Web.Files.Core.Entries { public static DIHelper AddEncryptionKeyPairHelperService(this DIHelper services) { - if (services.TryAddScoped>()) + if (services.TryAddScoped()) { - services.TryAddScoped>(); services .AddAuthContextService() .AddUserManagerService() .AddEncryptionLoginProviderService() .AddFileSecurityService() - .AddDaoFactoryService() - .AddFileStorageService(); + .AddDaoFactoryService(); } return services; diff --git a/products/ASC.Files/Core/Core/FileStorageService.cs b/products/ASC.Files/Core/Core/FileStorageService.cs index 7f59250cee..91ba3980a9 100644 --- a/products/ASC.Files/Core/Core/FileStorageService.cs +++ b/products/ASC.Files/Core/Core/FileStorageService.cs @@ -121,7 +121,7 @@ namespace ASC.Web.Files.Services.WCFService private FileSharingAceHelper FileSharingAceHelper { get; } private ApiContext ApiContext { get; } private ConsumerFactory ConsumerFactory { get; } - public EncryptionKeyPairHelper EncryptionKeyPairHelper { get; } + public EncryptionKeyPairHelper EncryptionKeyPairHelper { get; } public SettingsManager SettingsManager { get; } public ILog Logger { get; set; } @@ -165,7 +165,7 @@ namespace ASC.Web.Files.Services.WCFService FileSharingAceHelper fileSharingAceHelper, ApiContext apiContext, ConsumerFactory consumerFactory, - EncryptionKeyPairHelper encryptionKeyPairHelper, + EncryptionKeyPairHelper encryptionKeyPairHelper, SettingsManager settingsManager) { Global = global; @@ -1994,7 +1994,7 @@ namespace ASC.Web.Files.Services.WCFService { ErrorIf(!PrivacyRoomSettings.GetEnabled(SettingsManager), FilesCommonResource.ErrorMassage_SecurityException); - var fileKeyPair = EncryptionKeyPairHelper.GetKeyPair(fileId); + var fileKeyPair = EncryptionKeyPairHelper.GetKeyPair(fileId, this); return new ItemList(fileKeyPair); } diff --git a/products/ASC.Files/Server/Controllers/PrivacyRoomController.cs b/products/ASC.Files/Server/Controllers/PrivacyRoomController.cs index e4a00cc83a..6d5c2bab00 100644 --- a/products/ASC.Files/Server/Controllers/PrivacyRoomController.cs +++ b/products/ASC.Files/Server/Controllers/PrivacyRoomController.cs @@ -27,6 +27,7 @@ using ASC.MessagingSystem; using ASC.Web.Api.Routing; using ASC.Web.Core.PublicResources; using ASC.Web.Files.Core.Entries; +using ASC.Web.Files.Services.WCFService; using ASC.Web.Studio.Core; using Microsoft.AspNetCore.Mvc; @@ -42,9 +43,10 @@ namespace ASC.Api.Documents private PermissionContext PermissionContext { get; } private SettingsManager SettingsManager { get; } private TenantManager TenantManager { get; } - private EncryptionKeyPairHelper EncryptionKeyPairHelperInt { get; } - public EncryptionKeyPairHelper EncryptionKeyPairHelper { get; } - public MessageService MessageService { get; } + private EncryptionKeyPairHelper EncryptionKeyPairHelper { get; } + private FileStorageService FileStorageServiceInt { get; } + private FileStorageService FileStorageService { get; } + private MessageService MessageService { get; } private ILog Log { get; } public PrivacyRoomApi( @@ -52,8 +54,9 @@ namespace ASC.Api.Documents PermissionContext permissionContext, SettingsManager settingsManager, TenantManager tenantManager, - EncryptionKeyPairHelper encryptionKeyPairHelperint, - EncryptionKeyPairHelper encryptionKeyPairHelper, + EncryptionKeyPairHelper encryptionKeyPairHelper, + FileStorageService fileStorageServiceInt, + FileStorageService fileStorageService, MessageService messageService, IOptionsMonitor option) { @@ -61,8 +64,9 @@ namespace ASC.Api.Documents PermissionContext = permissionContext; SettingsManager = settingsManager; TenantManager = tenantManager; - EncryptionKeyPairHelperInt = encryptionKeyPairHelperint; EncryptionKeyPairHelper = encryptionKeyPairHelper; + FileStorageServiceInt = fileStorageServiceInt; + FileStorageService = fileStorageService; MessageService = messageService; Log = option.Get("ASC.Api.Documents"); } @@ -106,8 +110,7 @@ namespace ASC.Api.Documents { if (!PrivacyRoomSettings.GetEnabled(SettingsManager)) throw new System.Security.SecurityException(); - var fileKeyPair = EncryptionKeyPairHelper.GetKeyPair(fileId); - return fileKeyPair; + return EncryptionKeyPairHelper.GetKeyPair(fileId, FileStorageService); } [Read("access/{fileId:int}")] @@ -115,8 +118,7 @@ namespace ASC.Api.Documents { if (!PrivacyRoomSettings.GetEnabled(SettingsManager)) throw new System.Security.SecurityException(); - var fileKeyPair = EncryptionKeyPairHelperInt.GetKeyPair(fileId); - return fileKeyPair; + return EncryptionKeyPairHelper.GetKeyPair(fileId, FileStorageServiceInt); }