This commit is contained in:
pavelbannov 2020-02-13 15:19:25 +03:00
parent de4b4a0dde
commit c0cc00bfbe
21 changed files with 451 additions and 48 deletions

View File

@ -31,6 +31,8 @@ using ASC.Core;
using ASC.Core.Common.Configuration; using ASC.Core.Common.Configuration;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.FederatedLogin.LoginProviders namespace ASC.FederatedLogin.LoginProviders
{ {
@ -75,4 +77,18 @@ namespace ASC.FederatedLogin.LoginProviders
{ {
} }
} }
public static class BoxLoginProviderExtension
{
public static IServiceCollection AddBoxLoginProviderService(this IServiceCollection services)
{
services.TryAddScoped<BoxLoginProvider>();
return services
.AddConsumerFactoryService()
.AddKafkaService()
.AddTenantManagerService()
.AddCoreBaseSettingsService()
.AddCoreSettingsService();
}
}
} }

View File

@ -34,6 +34,8 @@ using ASC.Core.Common.Configuration;
using ASC.FederatedLogin.Helpers; using ASC.FederatedLogin.Helpers;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.FederatedLogin.LoginProviders namespace ASC.FederatedLogin.LoginProviders
{ {
@ -133,4 +135,17 @@ namespace ASC.FederatedLogin.LoginProviders
return refreshed; return refreshed;
} }
} }
public static class DocuSignLoginProviderExtension
{
public static IServiceCollection AddDocuSignLoginProviderService(this IServiceCollection services)
{
services.TryAddScoped<DocuSignLoginProvider>();
return services
.AddConsumerFactoryService()
.AddKafkaService()
.AddTenantManagerService()
.AddCoreBaseSettingsService()
.AddCoreSettingsService();
}
}
} }

View File

@ -31,6 +31,8 @@ using ASC.Core;
using ASC.Core.Common.Configuration; using ASC.Core.Common.Configuration;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.FederatedLogin.LoginProviders namespace ASC.FederatedLogin.LoginProviders
{ {
@ -72,4 +74,17 @@ namespace ASC.FederatedLogin.LoginProviders
{ {
} }
} }
public static class DropboxLoginProviderExtension
{
public static IServiceCollection AddDropboxLoginProviderService(this IServiceCollection services)
{
services.TryAddScoped<DropboxLoginProvider>();
return services
.AddConsumerFactoryService()
.AddKafkaService()
.AddTenantManagerService()
.AddCoreBaseSettingsService()
.AddCoreSettingsService();
}
}
} }

View File

@ -38,6 +38,8 @@ using ASC.Security.Cryptography;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
@ -180,4 +182,20 @@ namespace ASC.FederatedLogin.LoginProviders
public bool primary = false; public bool primary = false;
} }
} }
public static class GoogleLoginProviderExtension
{
public static IServiceCollection AddGoogleLoginProviderService(this IServiceCollection services)
{
services.TryAddScoped<GoogleLoginProvider>();
return services
.AddConsumerFactoryService()
.AddKafkaService()
.AddTenantManagerService()
.AddCoreBaseSettingsService()
.AddCoreSettingsService()
.AddSignatureService()
.AddInstanceCryptoService();
}
}
} }

View File

@ -31,6 +31,8 @@ using ASC.Core;
using ASC.Core.Common.Configuration; using ASC.Core.Common.Configuration;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.FederatedLogin.LoginProviders namespace ASC.FederatedLogin.LoginProviders
{ {
@ -75,4 +77,18 @@ namespace ASC.FederatedLogin.LoginProviders
{ {
} }
} }
public static class OneDriveLoginProviderExtension
{
public static IServiceCollection AddOneDriveLoginProviderService(this IServiceCollection services)
{
services.TryAddScoped<OneDriveLoginProvider>();
return services
.AddConsumerFactoryService()
.AddKafkaService()
.AddTenantManagerService()
.AddCoreBaseSettingsService()
.AddCoreSettingsService();
}
}
} }

View File

@ -31,6 +31,9 @@ using ASC.Core;
using ASC.Core.Common.Settings; using ASC.Core.Common.Settings;
using ASC.Files.Core; using ASC.Files.Core;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.Web.Files.Classes namespace ASC.Web.Files.Classes
{ {
[Serializable] [Serializable]
@ -221,4 +224,14 @@ namespace ASC.Web.Files.Classes
get { return !CoreBaseSettings.Personal && SettingsManager.Load<FilesSettings>().StoreForcesaveSetting; } get { return !CoreBaseSettings.Personal && SettingsManager.Load<FilesSettings>().StoreForcesaveSetting; }
} }
} }
public static class FilesSettingsHelperExtention
{
public static IServiceCollection AddFilesSettingsHelperService(this IServiceCollection services)
{
services.TryAddScoped<SettingsManager>();
return services
.AddSettingsManagerService()
.AddCoreBaseSettingsService();
}
}
} }

View File

@ -30,9 +30,13 @@ using System.Linq;
using ASC.Data.Storage; using ASC.Data.Storage;
using ASC.Files.Core; using ASC.Files.Core;
using ASC.Files.Core.Data;
using ASC.Files.Core.Security; using ASC.Files.Core.Security;
using ASC.Web.Files.Classes; using ASC.Web.Files.Classes;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.Web.Files.Api namespace ASC.Web.Files.Api
{ {
public class FilesIntegration public class FilesIntegration
@ -155,4 +159,15 @@ namespace ASC.Web.Files.Api
return result; return result;
} }
} }
public static class FilesIntegrationExtension
{
public static IServiceCollection AddFilesIntegrationService(this IServiceCollection services)
{
services.TryAddScoped<FilesIntegration>();
return services
.AddDaoFactoryService()
.AddFileSecurityService()
.AddGlobalStoreService();
}
}
} }

View File

@ -39,6 +39,7 @@ using ASC.FederatedLogin;
using ASC.FederatedLogin.Helpers; using ASC.FederatedLogin.Helpers;
using ASC.FederatedLogin.LoginProviders; using ASC.FederatedLogin.LoginProviders;
using ASC.Files.Core; using ASC.Files.Core;
using ASC.Files.Core.Data;
using ASC.Files.Core.Security; using ASC.Files.Core.Security;
using ASC.MessagingSystem; using ASC.MessagingSystem;
using ASC.Web.Core.Files; using ASC.Web.Core.Files;
@ -56,6 +57,7 @@ using DocuSign.eSign.Client;
using DocuSign.eSign.Model; using DocuSign.eSign.Model;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -163,7 +165,7 @@ namespace ASC.Web.Files.Helpers
public FileMarker FileMarker { get; } public FileMarker FileMarker { get; }
public GlobalFolderHelper GlobalFolderHelper { get; } public GlobalFolderHelper GlobalFolderHelper { get; }
public FilesMessageService FilesMessageService { get; } public FilesMessageService FilesMessageService { get; }
public DocuSignHandler DocuSignHandler { get; } public FilesLinkUtility FilesLinkUtility { get; }
public IServiceProvider ServiceProvider { get; } public IServiceProvider ServiceProvider { get; }
public DocuSignHelper( public DocuSignHelper(
@ -179,7 +181,7 @@ namespace ASC.Web.Files.Helpers
FileMarker fileMarker, FileMarker fileMarker,
GlobalFolderHelper globalFolderHelper, GlobalFolderHelper globalFolderHelper,
FilesMessageService filesMessageService, FilesMessageService filesMessageService,
DocuSignHandler docuSignHandler, FilesLinkUtility filesLinkUtility,
IServiceProvider serviceProvider) IServiceProvider serviceProvider)
{ {
DocuSignToken = docuSignToken; DocuSignToken = docuSignToken;
@ -193,7 +195,7 @@ namespace ASC.Web.Files.Helpers
FileMarker = fileMarker; FileMarker = fileMarker;
GlobalFolderHelper = globalFolderHelper; GlobalFolderHelper = globalFolderHelper;
FilesMessageService = filesMessageService; FilesMessageService = filesMessageService;
DocuSignHandler = docuSignHandler; FilesLinkUtility = filesLinkUtility;
ServiceProvider = serviceProvider; ServiceProvider = serviceProvider;
Log = options.CurrentValue; Log = options.CurrentValue;
} }
@ -315,7 +317,7 @@ namespace ASC.Web.Files.Helpers
// new RecipientEvent {RecipientEventStatusCode = "AuthenticationFailed"}, // new RecipientEvent {RecipientEventStatusCode = "AuthenticationFailed"},
// new RecipientEvent {RecipientEventStatusCode = "AutoResponded"}, // new RecipientEvent {RecipientEventStatusCode = "AutoResponded"},
// }, // },
Url = BaseCommonLinkUtility.GetFullAbsolutePath(DocuSignHandler.Path + "?" + FilesLinkUtility.Action + "=webhook"), Url = BaseCommonLinkUtility.GetFullAbsolutePath(DocuSignHandler.Path(FilesLinkUtility) + "?" + FilesLinkUtility.Action + "=webhook"),
}; };
Log.Debug("DocuSign hook url: " + eventNotification.Url); Log.Debug("DocuSign hook url: " + eventNotification.Url);
@ -367,7 +369,7 @@ namespace ASC.Web.Files.Helpers
var envelopeId = envelopeSummary.EnvelopeId; var envelopeId = envelopeSummary.EnvelopeId;
var url = envelopesApi.CreateSenderView(accountId, envelopeId, new ReturnUrlRequest var url = envelopesApi.CreateSenderView(accountId, envelopeId, new ReturnUrlRequest
{ {
ReturnUrl = BaseCommonLinkUtility.GetFullAbsolutePath(DocuSignHandler.Path + "?" + FilesLinkUtility.Action + "=redirect") ReturnUrl = BaseCommonLinkUtility.GetFullAbsolutePath(DocuSignHandler.Path(FilesLinkUtility) + "?" + FilesLinkUtility.Action + "=redirect")
}); });
Log.Debug("DocuSign senderView: " + url.Url); Log.Debug("DocuSign senderView: " + url.Url);
@ -472,4 +474,36 @@ namespace ASC.Web.Files.Helpers
Declined, Declined,
Voided, Voided,
} }
public static class DocuSignHelperExtension
{
public static IServiceCollection AddDocuSignTokenService(this IServiceCollection services)
{
services.TryAddScoped<DocuSignToken>();
return services
.AddAuthContextService()
.AddDocuSignLoginProviderService()
.AddTokenHelperService();
}
public static IServiceCollection AddDocuSignHelperService(this IServiceCollection services)
{
services.TryAddScoped<DocuSignHelper>();
return services
.AddDocuSignLoginProviderService()
.AddFileSecurityService()
.AddDaoFactoryService()
.AddBaseCommonLinkUtilityService()
.AddUserManagerService()
.AddAuthContextService()
.AddDisplayUserSettingsService()
.AddFileMarkerService()
.AddGlobalFolderHelperService()
.AddFilesMessageService()
.AddDocuSignTokenService()
.AddFilesLinkUtilityService()
;
}
}
} }

View File

@ -31,6 +31,8 @@ using ASC.Files.Core;
using ASC.MessagingSystem; using ASC.MessagingSystem;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
namespace ASC.Web.Files.Helpers namespace ASC.Web.Files.Helpers
@ -118,4 +120,15 @@ namespace ASC.Web.Files.Helpers
MessageService.Send(initiator, action, MessageTarget.Create(entry.ID), description); MessageService.Send(initiator, action, MessageTarget.Create(entry.ID), description);
} }
} }
public static class FilesMessageServiceExtension
{
public static IServiceCollection AddFilesMessageService(this IServiceCollection services)
{
services.TryAddScoped<FilesMessageService>();
return services
.AddMessageTargetService()
.AddMessageServiceService();
}
}
} }

View File

@ -30,8 +30,11 @@ using System.Linq;
using ASC.FederatedLogin.LoginProviders; using ASC.FederatedLogin.LoginProviders;
using ASC.Files.Core; using ASC.Files.Core;
using ASC.Files.Core.Data;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.Web.Files.Helpers namespace ASC.Web.Files.Helpers
{ {
@ -154,4 +157,19 @@ namespace ASC.Web.Files.Helpers
} }
} }
} }
public static class ThirdpartyConfigurationExtension
{
public static IServiceCollection AddThirdpartyConfigurationService(this IServiceCollection services)
{
services.TryAddScoped<ThirdpartyConfiguration>();
return services
.AddDaoFactoryService()
.AddDocuSignLoginProviderService()
.AddBoxLoginProviderService()
.AddDropboxLoginProviderService()
.AddOneDriveLoginProviderService()
.AddGoogleLoginProviderService()
;
}
}
} }

View File

@ -42,23 +42,23 @@ using ASC.Web.Files.Services.NotifyService;
using ASC.Web.Studio.Utility; using ASC.Web.Studio.Utility;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
namespace ASC.Web.Files.HttpHandlers namespace ASC.Web.Files.HttpHandlers
{ {
public class DocuSignHandler public class DocuSignHandler
{ {
public string Path public static string Path(FilesLinkUtility filesLinkUtility)
{ {
get { return FilesLinkUtility.FilesBaseAbsolutePath + "httphandlers/docusignhandler.ashx"; } return filesLinkUtility.FilesBaseAbsolutePath + "httphandlers/docusignhandler.ashx";
} }
private ILog Log { get; set; } private ILog Log { get; set; }
public RequestDelegate Next { get; } public RequestDelegate Next { get; }
public FilesLinkUtility FilesLinkUtility { get; }
public TenantExtra TenantExtra { get; } public TenantExtra TenantExtra { get; }
public DocuSignHelper DocuSignHelper { get; } public DocuSignHelper DocuSignHelper { get; }
public SecurityContext SecurityContext { get; } public SecurityContext SecurityContext { get; }
@ -67,14 +67,12 @@ namespace ASC.Web.Files.HttpHandlers
public DocuSignHandler( public DocuSignHandler(
RequestDelegate next, RequestDelegate next,
IOptionsMonitor<ILog> optionsMonitor, IOptionsMonitor<ILog> optionsMonitor,
FilesLinkUtility filesLinkUtility,
TenantExtra tenantExtra, TenantExtra tenantExtra,
DocuSignHelper docuSignHelper, DocuSignHelper docuSignHelper,
SecurityContext securityContext, SecurityContext securityContext,
NotifyClient notifyClient) NotifyClient notifyClient)
{ {
Next = next; Next = next;
FilesLinkUtility = filesLinkUtility;
TenantExtra = tenantExtra; TenantExtra = tenantExtra;
DocuSignHelper = docuSignHelper; DocuSignHelper = docuSignHelper;
SecurityContext = securityContext; SecurityContext = securityContext;
@ -239,4 +237,18 @@ namespace ASC.Web.Files.HttpHandlers
return result; return result;
} }
} }
public static class DocuSignHandlerExtension
{
public static IServiceCollection AddDocuSignHandlerService(this IServiceCollection services)
{
services.TryAddScoped<DocuSignHandler>();
return services
.AddFilesLinkUtilityService()
.AddTenantExtraService()
.AddDocuSignHelperService()
.AddSecurityContextService()
.AddNotifyClientService();
}
}
} }

View File

@ -40,6 +40,8 @@ using ASC.Web.Files.Classes;
using ASC.Web.Files.Resources; using ASC.Web.Files.Resources;
using ASC.Web.Studio.Utility; using ASC.Web.Studio.Utility;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -377,4 +379,21 @@ namespace ASC.Web.Files.Services.DocumentService
return new Exception(error, ex); return new Exception(error, ex);
} }
} }
public static class DocumentServiceConnectorExtension
{
public static IServiceCollection AddDocumentServiceConnectorService(this IServiceCollection services)
{
services.TryAddScoped<DocumentServiceConnector>();
return services
.AddFilesLinkUtilityService()
.AddFileUtilityService()
.AddPathProviderService()
.AddGlobalStoreService()
.AddBaseCommonLinkUtilityService()
.AddTenantManagerService()
.AddTenantExtraService()
.AddCoreSettingsService();
}
}
} }

View File

@ -33,6 +33,7 @@ using System.Text;
using ASC.Core; using ASC.Core;
using ASC.Core.Users; using ASC.Core.Users;
using ASC.Files.Core; using ASC.Files.Core;
using ASC.Files.Core.Data;
using ASC.Files.Core.Security; using ASC.Files.Core.Security;
using ASC.Security.Cryptography; using ASC.Security.Cryptography;
using ASC.Web.Core.Files; using ASC.Web.Core.Files;
@ -43,6 +44,9 @@ using ASC.Web.Studio.Core;
using JWT; using JWT;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using File = ASC.Files.Core.File; using File = ASC.Files.Core.File;
using FileShare = ASC.Files.Core.Security.FileShare; using FileShare = ASC.Files.Core.Security.FileShare;
@ -56,11 +60,11 @@ namespace ASC.Web.Files.Services.DocumentService
public AuthContext AuthContext { get; } public AuthContext AuthContext { get; }
public FileSecurity FileSecurity { get; } public FileSecurity FileSecurity { get; }
public SetupInfo SetupInfo { get; } public SetupInfo SetupInfo { get; }
public EntryManager EntryManager { get; }
public FileUtility FileUtility { get; } public FileUtility FileUtility { get; }
public MachinePseudoKeys MachinePseudoKeys { get; } public MachinePseudoKeys MachinePseudoKeys { get; }
public Global Global { get; } public Global Global { get; }
public DocumentServiceConnector DocumentServiceConnector { get; } public DocumentServiceConnector DocumentServiceConnector { get; }
public LockerManager LockerManager { get; }
public IServiceProvider ServiceProvider { get; } public IServiceProvider ServiceProvider { get; }
public DocumentServiceHelper( public DocumentServiceHelper(
@ -70,11 +74,11 @@ namespace ASC.Web.Files.Services.DocumentService
AuthContext authContext, AuthContext authContext,
FileSecurity fileSecurity, FileSecurity fileSecurity,
SetupInfo setupInfo, SetupInfo setupInfo,
EntryManager entryManager,
FileUtility fileUtility, FileUtility fileUtility,
MachinePseudoKeys machinePseudoKeys, MachinePseudoKeys machinePseudoKeys,
Global global, Global global,
DocumentServiceConnector documentServiceConnector, DocumentServiceConnector documentServiceConnector,
LockerManager lockerManager,
IServiceProvider serviceProvider) IServiceProvider serviceProvider)
{ {
DaoFactory = daoFactory; DaoFactory = daoFactory;
@ -83,11 +87,11 @@ namespace ASC.Web.Files.Services.DocumentService
AuthContext = authContext; AuthContext = authContext;
FileSecurity = fileSecurity; FileSecurity = fileSecurity;
SetupInfo = setupInfo; SetupInfo = setupInfo;
EntryManager = entryManager;
FileUtility = fileUtility; FileUtility = fileUtility;
MachinePseudoKeys = machinePseudoKeys; MachinePseudoKeys = machinePseudoKeys;
Global = global; Global = global;
DocumentServiceConnector = documentServiceConnector; DocumentServiceConnector = documentServiceConnector;
LockerManager = lockerManager;
ServiceProvider = serviceProvider; ServiceProvider = serviceProvider;
} }
@ -185,7 +189,7 @@ namespace ASC.Web.Files.Services.DocumentService
string strError = null; string strError = null;
if ((editPossible || reviewPossible || fillFormsPossible || commentPossible) if ((editPossible || reviewPossible || fillFormsPossible || commentPossible)
&& EntryManager.FileLockedForMe(file.ID)) && LockerManager.FileLockedForMe(file.ID))
{ {
if (tryEdit) if (tryEdit)
{ {
@ -373,4 +377,23 @@ namespace ASC.Web.Files.Services.DocumentService
return DocumentServiceConnector.Command(Web.Core.Files.DocumentService.CommandMethod.Meta, docKeyForTrack, file.ID, meta: meta); return DocumentServiceConnector.Command(Web.Core.Files.DocumentService.CommandMethod.Meta, docKeyForTrack, file.ID, meta: meta);
} }
} }
public static class DocumentServiceHelperExtention
{
public static IServiceCollection AddDocumentServiceHelperService(this IServiceCollection services)
{
services.TryAddScoped<DocumentServiceHelper>();
return services
.AddDaoFactoryService()
.AddFileShareLinkService()
.AddUserManagerService()
.AddAuthContextService()
.AddFileSecurityService()
.AddSetupInfo()
.AddLockerManagerService()
.AddFileUtilityService()
.AddMachinePseudoKeysService()
.AddGlobalService()
.AddDocumentServiceConnectorService();
}
}
} }

View File

@ -31,6 +31,7 @@ using System.Globalization;
using ASC.Core; using ASC.Core;
using ASC.Core.Common; using ASC.Core.Common;
using ASC.Files.Core; using ASC.Files.Core;
using ASC.Files.Core.Data;
using ASC.Files.Core.Security; using ASC.Files.Core.Security;
using ASC.Notify.Patterns; using ASC.Notify.Patterns;
using ASC.Web.Core.Files; using ASC.Web.Core.Files;
@ -38,6 +39,7 @@ using ASC.Web.Files.Classes;
using ASC.Web.Files.Resources; using ASC.Web.Files.Resources;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.Web.Files.Services.NotifyService namespace ASC.Web.Files.Services.NotifyService
{ {
@ -207,4 +209,24 @@ namespace ASC.Web.Files.Services.NotifyService
} }
} }
} }
public static class NotifyClientExtension
{
public static IServiceCollection AddNotifyClientService(this IServiceCollection services)
{
services.TryAddScoped<NotifyClient>();
return services
.AddFilesNotifySourceService()
.AddBaseCommonLinkUtilityService()
.AddUserManagerService()
.AddSecurityContextService()
.AddFilesLinkUtilityService()
.AddFileUtilityService()
.AddPathProviderService()
.AddTenantManagerService()
.AddDaoFactoryService()
;
}
}
} }

View File

@ -27,10 +27,14 @@
using System; using System;
using ASC.Core; using ASC.Core;
using ASC.Core.Notify;
using ASC.Notify.Model; using ASC.Notify.Model;
using ASC.Notify.Patterns; using ASC.Notify.Patterns;
using ASC.Notify.Recipients; using ASC.Notify.Recipients;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using NotifySourceBase = ASC.Core.Notify.NotifySource; using NotifySourceBase = ASC.Core.Notify.NotifySource;
namespace ASC.Web.Files.Services.NotifyService namespace ASC.Web.Files.Services.NotifyService
@ -54,4 +58,17 @@ namespace ASC.Web.Files.Services.NotifyService
return new XmlPatternProvider2(FilesPatternResource.patterns); return new XmlPatternProvider2(FilesPatternResource.patterns);
} }
} }
public static class FilesNotifySourceExtension
{
public static IServiceCollection AddFilesNotifySourceService(this IServiceCollection services)
{
services.TryAddScoped<NotifySource>();
return services
.AddUserManagerService()
.AddRecipientProviderImplService()
.AddSubscriptionManagerService();
}
}
} }

View File

@ -51,6 +51,7 @@ using ASC.MessagingSystem;
using ASC.Web.Api.Routing; using ASC.Web.Api.Routing;
using ASC.Web.Core.Files; using ASC.Web.Core.Files;
using ASC.Web.Core.Users; using ASC.Web.Core.Users;
using ASC.Web.Core.Utility;
using ASC.Web.Files.Classes; using ASC.Web.Files.Classes;
using ASC.Web.Files.Core.Search; using ASC.Web.Files.Core.Search;
using ASC.Web.Files.Helpers; using ASC.Web.Files.Helpers;
@ -2207,28 +2208,28 @@ namespace ASC.Web.Files.Services.WCFService
.AddPathProviderService() .AddPathProviderService()
.AddDaoFactoryService() .AddDaoFactoryService()
.AddFileMarkerService() .AddFileMarkerService()
.AddFilesSettingsHelperService()
.AddFileUtilityService()
.AddFileSecurityService()
.AddFilesMessageService()
.AddFileShareLinkService()
.AddDocumentServiceConnectorService()
.AddDocuSignLoginProviderService()
.AddEntryManagerService()
.AddDocumentServiceHelperService()
.AddThirdpartyConfigurationService()
.AddUrlShortener()
.AddDocuSignHelperService()
.AddDocuSignTokenService()
.AddFileConverterService()
.AddNotifyClientService()
; ;
/* /*
FilesSettingsHelper filesSettingsHelper,
FileUtility fileUtility,
DocuSignLoginProvider docuSignLoginProvider,
FileSecurity fileSecurity,
SocketManager socketManager, SocketManager socketManager,
EntryManager entryManager,
FilesMessageService filesMessageService,
DocumentServiceTrackerHelper documentServiceTrackerHelper, DocumentServiceTrackerHelper documentServiceTrackerHelper,
DocuSignToken docuSignToken,
DocuSignHelper docuSignHelper,
FileShareLink fileShareLink,
FileConverter fileConverter,
DocumentServiceHelper documentServiceHelper,
ThirdpartyConfiguration thirdpartyConfiguration,
DocumentServiceConnector documentServiceConnector,
FileSharing fileSharing, FileSharing fileSharing,
NotifyClient notifyClient,
FileOperationsManagerHelper fileOperationsManagerHelper, FileOperationsManagerHelper fileOperationsManagerHelper,
UrlShortener urlShortener,
*/ */
} }
} }

View File

@ -37,6 +37,8 @@ using ASC.Files.Core;
using ASC.Files.Core.EF; using ASC.Files.Core.EF;
using ASC.Security.Cryptography; using ASC.Security.Cryptography;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
namespace ASC.Web.Files.ThirdPartyApp namespace ASC.Web.Files.ThirdPartyApp
@ -161,4 +163,17 @@ namespace ASC.Web.Files.ThirdPartyApp
return string.IsNullOrEmpty(token) ? null : Token.FromJson(InstanceCrypto.Decrypt(token)); return string.IsNullOrEmpty(token) ? null : Token.FromJson(InstanceCrypto.Decrypt(token));
} }
} }
public static class TokenHelperExtension
{
public static IServiceCollection AddTokenHelperService(this IServiceCollection services)
{
services.TryAddScoped<TokenHelper>();
return services
.AddFilesDbContextService()
.AddInstanceCryptoService()
.AddAuthContextService()
.AddTenantManagerService();
}
}
} }

View File

@ -38,6 +38,7 @@ using ASC.Common.Logging;
using ASC.Core; using ASC.Core;
using ASC.Core.Users; using ASC.Core.Users;
using ASC.Files.Core; using ASC.Files.Core;
using ASC.Files.Core.Data;
using ASC.Files.Core.Security; using ASC.Files.Core.Security;
using ASC.Web.Core.Files; using ASC.Web.Core.Files;
using ASC.Web.Files.Api; using ASC.Web.Files.Api;
@ -47,9 +48,9 @@ using ASC.Web.Files.Helpers;
using ASC.Web.Files.Resources; using ASC.Web.Files.Resources;
using ASC.Web.Files.Services.DocumentService; using ASC.Web.Files.Services.DocumentService;
using ASC.Web.Files.ThirdPartyApp; using ASC.Web.Files.ThirdPartyApp;
using ASC.Web.Studio.Core;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
@ -59,6 +60,38 @@ using FileShare = ASC.Files.Core.Security.FileShare;
namespace ASC.Web.Files.Utils namespace ASC.Web.Files.Utils
{ {
public class LockerManager
{
public AuthContext AuthContext { get; }
public IDaoFactory DaoFactory { get; }
public LockerManager(AuthContext authContext, IDaoFactory daoFactory)
{
AuthContext = authContext;
DaoFactory = daoFactory;
}
public bool FileLockedForMe(object fileId, Guid userId = default)
{
var app = ThirdPartySelector.GetAppByFileId(fileId.ToString());
if (app != null)
{
return false;
}
userId = userId == default ? AuthContext.CurrentAccount.ID : userId;
var tagDao = DaoFactory.TagDao;
var lockedBy = FileLockedBy(fileId, tagDao);
return lockedBy != Guid.Empty && lockedBy != userId;
}
public Guid FileLockedBy(object fileId, ITagDao tagDao)
{
var tagLock = tagDao.GetTags(fileId, FileEntryType.File, TagType.Locked).FirstOrDefault();
return tagLock != null ? tagLock.Owner : Guid.Empty;
}
}
public class EntryManager public class EntryManager
{ {
private const string UPDATE_LIST = "filesUpdateList"; private const string UPDATE_LIST = "filesUpdateList";
@ -75,13 +108,13 @@ namespace ASC.Web.Files.Utils
public Global Global { get; } public Global Global { get; }
public GlobalStore GlobalStore { get; } public GlobalStore GlobalStore { get; }
public CoreBaseSettings CoreBaseSettings { get; } public CoreBaseSettings CoreBaseSettings { get; }
public SetupInfo SetupInfo { get; }
public FilesSettingsHelper FilesSettingsHelper { get; } public FilesSettingsHelper FilesSettingsHelper { get; }
public UserManager UserManager { get; } public UserManager UserManager { get; }
public FileShareLink FileShareLink { get; } public FileShareLink FileShareLink { get; }
public DocumentServiceHelper DocumentServiceHelper { get; } public DocumentServiceHelper DocumentServiceHelper { get; }
public ThirdpartyConfiguration ThirdpartyConfiguration { get; } public ThirdpartyConfiguration ThirdpartyConfiguration { get; }
public DocumentServiceConnector DocumentServiceConnector { get; } public DocumentServiceConnector DocumentServiceConnector { get; }
public LockerManager LockerManager { get; }
public IServiceProvider ServiceProvider { get; } public IServiceProvider ServiceProvider { get; }
public ILog Logger { get; } public ILog Logger { get; }
@ -97,7 +130,6 @@ namespace ASC.Web.Files.Utils
Global global, Global global,
GlobalStore globalStore, GlobalStore globalStore,
CoreBaseSettings coreBaseSettings, CoreBaseSettings coreBaseSettings,
SetupInfo setupInfo,
FilesSettingsHelper filesSettingsHelper, FilesSettingsHelper filesSettingsHelper,
UserManager userManager, UserManager userManager,
IOptionsMonitor<ILog> optionsMonitor, IOptionsMonitor<ILog> optionsMonitor,
@ -105,6 +137,7 @@ namespace ASC.Web.Files.Utils
DocumentServiceHelper documentServiceHelper, DocumentServiceHelper documentServiceHelper,
ThirdpartyConfiguration thirdpartyConfiguration, ThirdpartyConfiguration thirdpartyConfiguration,
DocumentServiceConnector documentServiceConnector, DocumentServiceConnector documentServiceConnector,
LockerManager lockerManager,
IServiceProvider serviceProvider) IServiceProvider serviceProvider)
{ {
DaoFactory = daoFactory; DaoFactory = daoFactory;
@ -118,13 +151,13 @@ namespace ASC.Web.Files.Utils
Global = global; Global = global;
GlobalStore = globalStore; GlobalStore = globalStore;
CoreBaseSettings = coreBaseSettings; CoreBaseSettings = coreBaseSettings;
SetupInfo = setupInfo;
FilesSettingsHelper = filesSettingsHelper; FilesSettingsHelper = filesSettingsHelper;
UserManager = userManager; UserManager = userManager;
FileShareLink = fileShareLink; FileShareLink = fileShareLink;
DocumentServiceHelper = documentServiceHelper; DocumentServiceHelper = documentServiceHelper;
ThirdpartyConfiguration = thirdpartyConfiguration; ThirdpartyConfiguration = thirdpartyConfiguration;
DocumentServiceConnector = documentServiceConnector; DocumentServiceConnector = documentServiceConnector;
LockerManager = lockerManager;
ServiceProvider = serviceProvider; ServiceProvider = serviceProvider;
Logger = optionsMonitor.CurrentValue; Logger = optionsMonitor.CurrentValue;
cache = AscCache.Memory; cache = AscCache.Memory;
@ -590,22 +623,12 @@ namespace ASC.Web.Files.Utils
public bool FileLockedForMe(object fileId, Guid userId = default) public bool FileLockedForMe(object fileId, Guid userId = default)
{ {
var app = ThirdPartySelector.GetAppByFileId(fileId.ToString()); return LockerManager.FileLockedForMe(fileId, userId);
if (app != null)
{
return false;
}
userId = userId == default ? AuthContext.CurrentAccount.ID : userId;
var tagDao = DaoFactory.TagDao;
var lockedBy = FileLockedBy(fileId, tagDao);
return lockedBy != Guid.Empty && lockedBy != userId;
} }
public Guid FileLockedBy(object fileId, ITagDao tagDao) public Guid FileLockedBy(object fileId, ITagDao tagDao)
{ {
var tagLock = tagDao.GetTags(fileId, FileEntryType.File, TagType.Locked).FirstOrDefault(); return LockerManager.FileLockedBy(fileId, tagDao);
return tagLock != null ? tagLock.Owner : Guid.Empty;
} }
@ -1000,4 +1023,43 @@ namespace ASC.Web.Files.Utils
folderDao.ReassignFolders(folderIds.ToArray(), toUserId); folderDao.ReassignFolders(folderIds.ToArray(), toUserId);
} }
} }
public static class EntryManagerExtension
{
public static IServiceCollection AddEntryManagerService(this IServiceCollection services)
{
services.TryAddScoped<EntryManager>();
return services
.AddDaoFactoryService()
.AddFileSecurityService()
.AddGlobalFolderHelperService()
.AddPathProviderService()
.AddAuthContextService()
.AddFileMarkerService()
.AddFileUtilityService()
.AddGlobalService()
.AddGlobalStoreService()
.AddCoreBaseSettingsService()
.AddFilesSettingsHelperService()
.AddUserManagerService()
.AddFileShareLinkService()
.AddDocumentServiceConnectorService()
.AddDocumentServiceHelperService()
.AddFilesIntegrationService()
.AddThirdpartyConfigurationService()
.AddLockerManagerService()
;
}
}
public static class LockerManagerExtension
{
public static IServiceCollection AddLockerManagerService(this IServiceCollection services)
{
services.TryAddScoped<LockerManager>();
return services
.AddAuthContextService()
.AddDaoFactoryService();
}
}
} }

View File

@ -40,6 +40,7 @@ using ASC.Common.Logging;
using ASC.Common.Security.Authentication; using ASC.Common.Security.Authentication;
using ASC.Core; using ASC.Core;
using ASC.Files.Core; using ASC.Files.Core;
using ASC.Files.Core.Data;
using ASC.Files.Core.Security; using ASC.Files.Core.Security;
using ASC.MessagingSystem; using ASC.MessagingSystem;
using ASC.Web.Core.Files; using ASC.Web.Core.Files;
@ -53,6 +54,7 @@ using ASC.Web.Studio.Core;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using File = ASC.Files.Core.File; using File = ASC.Files.Core.File;
@ -724,4 +726,29 @@ namespace ASC.Web.Files.Utils
public string Password { get; set; } public string Password { get; set; }
} }
} }
public static class FileConverterExtension
{
public static IServiceCollection AddFileConverterService(this IServiceCollection services)
{
services.TryAddScoped<FileConverter>();
return services
.AddFilesLinkUtilityService()
.AddFileUtilityService()
.AddDaoFactoryService()
.AddSetupInfo()
.AddPathProviderService()
.AddFileSecurityService()
.AddFileMarkerService()
.AddTenantManagerService()
.AddAuthContextService()
.AddEntryManagerService()
.AddFilesSettingsHelperService()
.AddGlobalFolderHelperService()
.AddFilesMessageService()
.AddFileShareLinkService()
.AddDocumentServiceHelperService()
.AddDocumentServiceConnectorService();
}
}
} }

View File

@ -33,6 +33,9 @@ using ASC.Files.Core.Security;
using ASC.Web.Core.Files; using ASC.Web.Core.Files;
using ASC.Web.Files.Classes; using ASC.Web.Files.Classes;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using File = ASC.Files.Core.File; using File = ASC.Files.Core.File;
using FileShare = ASC.Files.Core.Security.FileShare; using FileShare = ASC.Files.Core.Security.FileShare;
@ -110,4 +113,17 @@ namespace ASC.Web.Files.Utils
return FileShare.Restrict; return FileShare.Restrict;
} }
} }
public static class FileShareLinkExtension
{
public static IServiceCollection AddFileShareLinkService(this IServiceCollection services)
{
services.TryAddScoped<FileShareLink>();
return services
.AddFilesLinkUtilityService()
.AddFileUtilityService()
.AddBaseCommonLinkUtilityService()
.AddGlobalService()
.AddFileSecurityService();
}
}
} }

View File

@ -34,13 +34,18 @@ using ASC.Core.Common.EF;
using ASC.Core.Common.EF.Context; using ASC.Core.Common.EF.Context;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.Web.Core.Files namespace ASC.Web.Core.Files
{ {
public class FileUtility public class FileUtility
{ {
public DbContextManager<FilesDbContext> FilesDbContext { get; set; } public DbContextManager<FilesDbContext> FilesDbContext { get; set; }
public FileUtility(IConfiguration configuration, FilesLinkUtility filesLinkUtility, DbContextManager<FilesDbContext> dbContextManager) public FileUtility(
IConfiguration configuration,
FilesLinkUtility filesLinkUtility,
DbContextManager<FilesDbContext> dbContextManager)
{ {
Configuration = configuration; Configuration = configuration;
FilesLinkUtility = filesLinkUtility; FilesLinkUtility = filesLinkUtility;
@ -374,4 +379,15 @@ namespace ASC.Web.Core.Files
#endregion #endregion
} }
public static class FileUtilityExtention
{
public static IServiceCollection AddFileUtilityService(this IServiceCollection services)
{
services.TryAddScoped<FileUtility>();
return services
.AddFilesLinkUtilityService()
.AddFilesDbContextService();
}
}
} }