Files: fix

This commit is contained in:
pavelbannov 2020-09-25 13:47:21 +03:00
parent 693e35ac57
commit 89df700fb1
5 changed files with 34 additions and 31 deletions

View File

@ -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<ILog> Options { get; }
@ -405,7 +405,8 @@ namespace ASC.Core.Notify.Signalr
return services
.AddTenantManagerService()
.AddCoreSettingsService();
.AddCoreSettingsService()
.AddMachinePseudoKeysService();
}
return services;

View File

@ -263,12 +263,17 @@ namespace ASC.Security.Cryptography
public static class EmailValidationKeyProviderExtension
{
public static DIHelper AddEmailValidationKeyProviderService(this DIHelper services)
{
services.TryAddTransient<EmailValidationKeyModel>();
services.TryAddScoped<EmailValidationKeyProvider>();
return services
.AddTenantManagerService();
{
if (services.TryAddScoped<EmailValidationKeyProvider>())
{
services.TryAddTransient<EmailValidationKeyModel>();
return services
.AddTenantManagerService()
.AddMachinePseudoKeysService();
}
return services;
}
}
}

View File

@ -39,29 +39,26 @@ namespace ASC.Web.Files.Core.Entries
public Guid UserId { get; set; }
}
public class EncryptionKeyPairHelper<T>
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<T> FileStorageService { get; }
public EncryptionKeyPairHelper(
UserManager userManager,
AuthContext authContext,
EncryptionLoginProvider encryptionLoginProvider,
FileSecurity fileSecurity,
IDaoFactory daoFactory,
FileStorageService<T> 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<EncryptionKeyPair> GetKeyPair(T fileId)
public IEnumerable<EncryptionKeyPair> GetKeyPair<T>(T fileId, FileStorageService<T> FileStorageService)
{
var fileDao = DaoFactory.GetFileDao<T>();
@ -131,16 +128,14 @@ namespace ASC.Web.Files.Core.Entries
{
public static DIHelper AddEncryptionKeyPairHelperService(this DIHelper services)
{
if (services.TryAddScoped<EncryptionKeyPairHelper<string>>())
if (services.TryAddScoped<EncryptionKeyPairHelper>())
{
services.TryAddScoped<EncryptionKeyPairHelper<int>>();
services
.AddAuthContextService()
.AddUserManagerService()
.AddEncryptionLoginProviderService()
.AddFileSecurityService()
.AddDaoFactoryService()
.AddFileStorageService();
.AddDaoFactoryService();
}
return services;

View File

@ -121,7 +121,7 @@ namespace ASC.Web.Files.Services.WCFService
private FileSharingAceHelper<T> FileSharingAceHelper { get; }
private ApiContext ApiContext { get; }
private ConsumerFactory ConsumerFactory { get; }
public EncryptionKeyPairHelper<T> 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<T> fileSharingAceHelper,
ApiContext apiContext,
ConsumerFactory consumerFactory,
EncryptionKeyPairHelper<T> 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<EncryptionKeyPair>(fileKeyPair);
}

View File

@ -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<int> EncryptionKeyPairHelperInt { get; }
public EncryptionKeyPairHelper<string> EncryptionKeyPairHelper { get; }
public MessageService MessageService { get; }
private EncryptionKeyPairHelper EncryptionKeyPairHelper { get; }
private FileStorageService<int> FileStorageServiceInt { get; }
private FileStorageService<string> 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<int> encryptionKeyPairHelperint,
EncryptionKeyPairHelper<string> encryptionKeyPairHelper,
EncryptionKeyPairHelper encryptionKeyPairHelper,
FileStorageService<int> fileStorageServiceInt,
FileStorageService<string> fileStorageService,
MessageService messageService,
IOptionsMonitor<ILog> 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);
}