diff --git a/products/ASC.Files/Core/Core/FileStorageService.cs b/products/ASC.Files/Core/Core/FileStorageService.cs index 7072bf436c..b540cfaaf3 100644 --- a/products/ASC.Files/Core/Core/FileStorageService.cs +++ b/products/ASC.Files/Core/Core/FileStorageService.cs @@ -815,29 +815,39 @@ namespace ASC.Web.Files.Services.WCFService return DocumentServiceHelper.GetDocKey(fileId, -1, DateTime.MinValue); } - Configuration configuration; + Configuration configuration; app = ThirdPartySelector.GetAppByFileId(fileId.ToString()); + string key; + if (app == null) { - DocumentServiceHelper.GetParams(fileId.ToString(), -1, doc, true, true, false, out configuration); + DocumentServiceHelper.GetParams(fileId, -1, doc, true, true, false, out configuration); + ErrorIf(!configuration.EditorConfig.ModeWrite + || !(configuration.Document.Permissions.Edit + || configuration.Document.Permissions.ModifyFilter + || configuration.Document.Permissions.Review + || configuration.Document.Permissions.FillForms + || configuration.Document.Permissions.Comment), + !string.IsNullOrEmpty(configuration.ErrorMessage) ? configuration.ErrorMessage : FilesCommonResource.ErrorMassage_SecurityException_EditFile); + key = configuration.Document.Key; } else { var file = app.GetFile(fileId.ToString(), out var editable); - DocumentServiceHelper.GetParams(file, true, editable ? FileShare.ReadWrite : FileShare.Read, false, editable, editable, editable, false, out configuration); + DocumentServiceHelper.GetParams(file, true, editable ? FileShare.ReadWrite : FileShare.Read, false, editable, editable, editable, false, out var configuration1); + ErrorIf(!configuration1.EditorConfig.ModeWrite + || !(configuration1.Document.Permissions.Edit + || configuration1.Document.Permissions.ModifyFilter + || configuration1.Document.Permissions.Review + || configuration1.Document.Permissions.FillForms + || configuration1.Document.Permissions.Comment), + !string.IsNullOrEmpty(configuration1.ErrorMessage) ? configuration1.ErrorMessage : FilesCommonResource.ErrorMassage_SecurityException_EditFile); + key = configuration1.Document.Key; } - ErrorIf(!configuration.EditorConfig.ModeWrite - || !(configuration.Document.Permissions.Edit - || configuration.Document.Permissions.ModifyFilter - || configuration.Document.Permissions.Review - || configuration.Document.Permissions.FillForms - || configuration.Document.Permissions.Comment), - !string.IsNullOrEmpty(configuration.ErrorMessage) ? configuration.ErrorMessage : FilesCommonResource.ErrorMassage_SecurityException_EditFile); - var key = configuration.Document.Key; - if (!DocumentServiceTrackerHelper.StartTrack(fileId.ToString(), key)) + if (!DocumentServiceTrackerHelper.StartTrack(fileId, key)) { throw new Exception(FilesCommonResource.ErrorMassage_StartEditing); } diff --git a/web/ASC.Web.Core/Files/DocumentService.cs b/web/ASC.Web.Core/Files/DocumentService.cs index cf8b48ed4e..aca8268007 100644 --- a/web/ASC.Web.Core/Files/DocumentService.cs +++ b/web/ASC.Web.Core/Files/DocumentService.cs @@ -34,6 +34,7 @@ using System.Net; using System.Runtime.Serialization; using System.Security.Cryptography; using System.Text; +using System.Text.Encodings.Web; using System.Text.Json.Serialization; using System.Text.RegularExpressions; @@ -268,7 +269,11 @@ namespace ASC.Web.Core.Files body.Token = token; } - var bodyString = System.Text.Json.JsonSerializer.Serialize(body, new System.Text.Json.JsonSerializerOptions() { IgnoreNullValues = true }); + var bodyString = System.Text.Json.JsonSerializer.Serialize(body, new System.Text.Json.JsonSerializerOptions() + { + IgnoreNullValues = true, + Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping + }); var bytes = Encoding.UTF8.GetBytes(bodyString ?? ""); request.ContentLength = bytes.Length; diff --git a/web/ASC.Web.Core/Files/FilesLinkUtility.cs b/web/ASC.Web.Core/Files/FilesLinkUtility.cs index 9cd25a6a3e..f6b56b1130 100644 --- a/web/ASC.Web.Core/Files/FilesLinkUtility.cs +++ b/web/ASC.Web.Core/Files/FilesLinkUtility.cs @@ -74,7 +74,7 @@ namespace ASC.Web.Core.Files get { return BaseCommonLinkUtility.ToAbsolute(FilesBaseVirtualPath); } } - public const string FileId = "fileId"; + public const string FileId = "fileid"; public const string FolderId = "folderid"; public const string Version = "version"; public const string FileUri = "fileuri";