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 Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
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 Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.FederatedLogin.LoginProviders
{
@ -133,4 +135,17 @@ namespace ASC.FederatedLogin.LoginProviders
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 Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
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.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Newtonsoft.Json.Linq;
@ -180,4 +182,20 @@ namespace ASC.FederatedLogin.LoginProviders
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 Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
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.Files.Core;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.Web.Files.Classes
{
[Serializable]
@ -221,4 +224,14 @@ namespace ASC.Web.Files.Classes
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.Files.Core;
using ASC.Files.Core.Data;
using ASC.Files.Core.Security;
using ASC.Web.Files.Classes;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.Web.Files.Api
{
public class FilesIntegration
@ -155,4 +159,15 @@ namespace ASC.Web.Files.Api
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.LoginProviders;
using ASC.Files.Core;
using ASC.Files.Core.Data;
using ASC.Files.Core.Security;
using ASC.MessagingSystem;
using ASC.Web.Core.Files;
@ -56,6 +57,7 @@ using DocuSign.eSign.Client;
using DocuSign.eSign.Model;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
@ -163,7 +165,7 @@ namespace ASC.Web.Files.Helpers
public FileMarker FileMarker { get; }
public GlobalFolderHelper GlobalFolderHelper { get; }
public FilesMessageService FilesMessageService { get; }
public DocuSignHandler DocuSignHandler { get; }
public FilesLinkUtility FilesLinkUtility { get; }
public IServiceProvider ServiceProvider { get; }
public DocuSignHelper(
@ -179,7 +181,7 @@ namespace ASC.Web.Files.Helpers
FileMarker fileMarker,
GlobalFolderHelper globalFolderHelper,
FilesMessageService filesMessageService,
DocuSignHandler docuSignHandler,
FilesLinkUtility filesLinkUtility,
IServiceProvider serviceProvider)
{
DocuSignToken = docuSignToken;
@ -193,7 +195,7 @@ namespace ASC.Web.Files.Helpers
FileMarker = fileMarker;
GlobalFolderHelper = globalFolderHelper;
FilesMessageService = filesMessageService;
DocuSignHandler = docuSignHandler;
FilesLinkUtility = filesLinkUtility;
ServiceProvider = serviceProvider;
Log = options.CurrentValue;
}
@ -315,7 +317,7 @@ namespace ASC.Web.Files.Helpers
// new RecipientEvent {RecipientEventStatusCode = "AuthenticationFailed"},
// 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);
@ -367,7 +369,7 @@ namespace ASC.Web.Files.Helpers
var envelopeId = envelopeSummary.EnvelopeId;
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);
@ -472,4 +474,36 @@ namespace ASC.Web.Files.Helpers
Declined,
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 Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
namespace ASC.Web.Files.Helpers
@ -118,4 +120,15 @@ namespace ASC.Web.Files.Helpers
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.Files.Core;
using ASC.Files.Core.Data;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
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 Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
namespace ASC.Web.Files.HttpHandlers
{
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; }
public RequestDelegate Next { get; }
public FilesLinkUtility FilesLinkUtility { get; }
public TenantExtra TenantExtra { get; }
public DocuSignHelper DocuSignHelper { get; }
public SecurityContext SecurityContext { get; }
@ -67,14 +67,12 @@ namespace ASC.Web.Files.HttpHandlers
public DocuSignHandler(
RequestDelegate next,
IOptionsMonitor<ILog> optionsMonitor,
FilesLinkUtility filesLinkUtility,
TenantExtra tenantExtra,
DocuSignHelper docuSignHelper,
SecurityContext securityContext,
NotifyClient notifyClient)
{
Next = next;
FilesLinkUtility = filesLinkUtility;
TenantExtra = tenantExtra;
DocuSignHelper = docuSignHelper;
SecurityContext = securityContext;
@ -239,4 +237,18 @@ namespace ASC.Web.Files.HttpHandlers
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.Studio.Utility;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
@ -377,4 +379,21 @@ namespace ASC.Web.Files.Services.DocumentService
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.Users;
using ASC.Files.Core;
using ASC.Files.Core.Data;
using ASC.Files.Core.Security;
using ASC.Security.Cryptography;
using ASC.Web.Core.Files;
@ -43,6 +44,9 @@ using ASC.Web.Studio.Core;
using JWT;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using File = ASC.Files.Core.File;
using FileShare = ASC.Files.Core.Security.FileShare;
@ -56,11 +60,11 @@ namespace ASC.Web.Files.Services.DocumentService
public AuthContext AuthContext { get; }
public FileSecurity FileSecurity { get; }
public SetupInfo SetupInfo { get; }
public EntryManager EntryManager { get; }
public FileUtility FileUtility { get; }
public MachinePseudoKeys MachinePseudoKeys { get; }
public Global Global { get; }
public DocumentServiceConnector DocumentServiceConnector { get; }
public LockerManager LockerManager { get; }
public IServiceProvider ServiceProvider { get; }
public DocumentServiceHelper(
@ -70,11 +74,11 @@ namespace ASC.Web.Files.Services.DocumentService
AuthContext authContext,
FileSecurity fileSecurity,
SetupInfo setupInfo,
EntryManager entryManager,
FileUtility fileUtility,
MachinePseudoKeys machinePseudoKeys,
Global global,
DocumentServiceConnector documentServiceConnector,
LockerManager lockerManager,
IServiceProvider serviceProvider)
{
DaoFactory = daoFactory;
@ -83,11 +87,11 @@ namespace ASC.Web.Files.Services.DocumentService
AuthContext = authContext;
FileSecurity = fileSecurity;
SetupInfo = setupInfo;
EntryManager = entryManager;
FileUtility = fileUtility;
MachinePseudoKeys = machinePseudoKeys;
Global = global;
DocumentServiceConnector = documentServiceConnector;
LockerManager = lockerManager;
ServiceProvider = serviceProvider;
}
@ -185,7 +189,7 @@ namespace ASC.Web.Files.Services.DocumentService
string strError = null;
if ((editPossible || reviewPossible || fillFormsPossible || commentPossible)
&& EntryManager.FileLockedForMe(file.ID))
&& LockerManager.FileLockedForMe(file.ID))
{
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);
}
}
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.Common;
using ASC.Files.Core;
using ASC.Files.Core.Data;
using ASC.Files.Core.Security;
using ASC.Notify.Patterns;
using ASC.Web.Core.Files;
@ -38,6 +39,7 @@ using ASC.Web.Files.Classes;
using ASC.Web.Files.Resources;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
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 ASC.Core;
using ASC.Core.Notify;
using ASC.Notify.Model;
using ASC.Notify.Patterns;
using ASC.Notify.Recipients;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using NotifySourceBase = ASC.Core.Notify.NotifySource;
namespace ASC.Web.Files.Services.NotifyService
@ -54,4 +58,17 @@ namespace ASC.Web.Files.Services.NotifyService
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.Core.Files;
using ASC.Web.Core.Users;
using ASC.Web.Core.Utility;
using ASC.Web.Files.Classes;
using ASC.Web.Files.Core.Search;
using ASC.Web.Files.Helpers;
@ -2207,28 +2208,28 @@ namespace ASC.Web.Files.Services.WCFService
.AddPathProviderService()
.AddDaoFactoryService()
.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,
EntryManager entryManager,
FilesMessageService filesMessageService,
DocumentServiceTrackerHelper documentServiceTrackerHelper,
DocuSignToken docuSignToken,
DocuSignHelper docuSignHelper,
FileShareLink fileShareLink,
FileConverter fileConverter,
DocumentServiceHelper documentServiceHelper,
ThirdpartyConfiguration thirdpartyConfiguration,
DocumentServiceConnector documentServiceConnector,
FileSharing fileSharing,
NotifyClient notifyClient,
FileOperationsManagerHelper fileOperationsManagerHelper,
UrlShortener urlShortener,
*/
}
}

View File

@ -37,6 +37,8 @@ using ASC.Files.Core;
using ASC.Files.Core.EF;
using ASC.Security.Cryptography;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
namespace ASC.Web.Files.ThirdPartyApp
@ -161,4 +163,17 @@ namespace ASC.Web.Files.ThirdPartyApp
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.Users;
using ASC.Files.Core;
using ASC.Files.Core.Data;
using ASC.Files.Core.Security;
using ASC.Web.Core.Files;
using ASC.Web.Files.Api;
@ -47,9 +48,9 @@ using ASC.Web.Files.Helpers;
using ASC.Web.Files.Resources;
using ASC.Web.Files.Services.DocumentService;
using ASC.Web.Files.ThirdPartyApp;
using ASC.Web.Studio.Core;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using Newtonsoft.Json.Linq;
@ -59,6 +60,38 @@ using FileShare = ASC.Files.Core.Security.FileShare;
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
{
private const string UPDATE_LIST = "filesUpdateList";
@ -75,13 +108,13 @@ namespace ASC.Web.Files.Utils
public Global Global { get; }
public GlobalStore GlobalStore { get; }
public CoreBaseSettings CoreBaseSettings { get; }
public SetupInfo SetupInfo { get; }
public FilesSettingsHelper FilesSettingsHelper { get; }
public UserManager UserManager { get; }
public FileShareLink FileShareLink { get; }
public DocumentServiceHelper DocumentServiceHelper { get; }
public ThirdpartyConfiguration ThirdpartyConfiguration { get; }
public DocumentServiceConnector DocumentServiceConnector { get; }
public LockerManager LockerManager { get; }
public IServiceProvider ServiceProvider { get; }
public ILog Logger { get; }
@ -97,7 +130,6 @@ namespace ASC.Web.Files.Utils
Global global,
GlobalStore globalStore,
CoreBaseSettings coreBaseSettings,
SetupInfo setupInfo,
FilesSettingsHelper filesSettingsHelper,
UserManager userManager,
IOptionsMonitor<ILog> optionsMonitor,
@ -105,6 +137,7 @@ namespace ASC.Web.Files.Utils
DocumentServiceHelper documentServiceHelper,
ThirdpartyConfiguration thirdpartyConfiguration,
DocumentServiceConnector documentServiceConnector,
LockerManager lockerManager,
IServiceProvider serviceProvider)
{
DaoFactory = daoFactory;
@ -118,13 +151,13 @@ namespace ASC.Web.Files.Utils
Global = global;
GlobalStore = globalStore;
CoreBaseSettings = coreBaseSettings;
SetupInfo = setupInfo;
FilesSettingsHelper = filesSettingsHelper;
UserManager = userManager;
FileShareLink = fileShareLink;
DocumentServiceHelper = documentServiceHelper;
ThirdpartyConfiguration = thirdpartyConfiguration;
DocumentServiceConnector = documentServiceConnector;
LockerManager = lockerManager;
ServiceProvider = serviceProvider;
Logger = optionsMonitor.CurrentValue;
cache = AscCache.Memory;
@ -590,22 +623,12 @@ namespace ASC.Web.Files.Utils
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;
return LockerManager.FileLockedForMe(fileId, 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;
return LockerManager.FileLockedBy(fileId, tagDao);
}
@ -1000,4 +1023,43 @@ namespace ASC.Web.Files.Utils
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.Core;
using ASC.Files.Core;
using ASC.Files.Core.Data;
using ASC.Files.Core.Security;
using ASC.MessagingSystem;
using ASC.Web.Core.Files;
@ -53,6 +54,7 @@ using ASC.Web.Studio.Core;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using File = ASC.Files.Core.File;
@ -724,4 +726,29 @@ namespace ASC.Web.Files.Utils
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.Files.Classes;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using File = ASC.Files.Core.File;
using FileShare = ASC.Files.Core.Security.FileShare;
@ -110,4 +113,17 @@ namespace ASC.Web.Files.Utils
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 Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace ASC.Web.Core.Files
{
public class FileUtility
{
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;
FilesLinkUtility = filesLinkUtility;
@ -374,4 +379,15 @@ namespace ASC.Web.Core.Files
#endregion
}
public static class FileUtilityExtention
{
public static IServiceCollection AddFileUtilityService(this IServiceCollection services)
{
services.TryAddScoped<FileUtility>();
return services
.AddFilesLinkUtilityService()
.AddFilesDbContextService();
}
}
}