diff --git a/common/services/ASC.ApiSystem/Models/TenantModel.cs b/common/services/ASC.ApiSystem/Models/TenantModel.cs index 5a04053123..d54b4347f6 100644 --- a/common/services/ASC.ApiSystem/Models/TenantModel.cs +++ b/common/services/ASC.ApiSystem/Models/TenantModel.cs @@ -24,9 +24,8 @@ */ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; -using ASC.ApiSystem.Classes; using ASC.ApiSystem.Interfaces; using ASC.Core.Tenants; diff --git a/common/services/ASC.Data.Backup/Controllers/BackupController.cs b/common/services/ASC.Data.Backup/Controllers/BackupController.cs index a39e2d6d58..392690a0a6 100644 --- a/common/services/ASC.Data.Backup/Controllers/BackupController.cs +++ b/common/services/ASC.Data.Backup/Controllers/BackupController.cs @@ -61,7 +61,19 @@ namespace ASC.Data.Backup.Controllers /// Include mail in the backup /// Backup [Create("createbackupschedule")] - public bool CreateBackupSchedule(BackupSchedule backupSchedule) + public bool CreateBackupScheduleFromBody([FromBody]BackupSchedule backupSchedule) + { + return CreateBackupSchedule(backupSchedule); + } + + [Create("createbackupschedule")] + [Consumes("application/x-www-form-urlencoded")] + public bool CreateBackupScheduleFromForm([FromForm]BackupSchedule backupSchedule) + { + return CreateBackupSchedule(backupSchedule); + } + + private bool CreateBackupSchedule(BackupSchedule backupSchedule) { if (CoreBaseSettings.Standalone) { @@ -106,7 +118,19 @@ namespace ASC.Data.Backup.Controllers /// Backup /// Backup Progress [Create("startbackup")] - public BackupProgress StartBackup(Models.Backup backup) + public BackupProgress StartBackupFromBody([FromBody]Models.Backup backup) + { + return StartBackup(backup); + } + + [Create("startbackup")] + [Consumes("application/x-www-form-urlencoded")] + public BackupProgress StartBackupFromForm([FromForm]Models.Backup backup) + { + return StartBackup(backup); + } + + private BackupProgress StartBackup(Models.Backup backup) { if (CoreBaseSettings.Standalone) { @@ -193,7 +217,19 @@ namespace ASC.Data.Backup.Controllers /// Backup /// Restore Progress [Create("startrestore")] - public BackupProgress StartBackupRestore(BackupRestore backupRestore) + public BackupProgress StartBackupRestoreFromBody([FromBody]BackupRestore backupRestore) + { + return StartBackupRestore(backupRestore); + } + + [Create("startrestore")] + [Consumes("application/x-www-form-urlencoded")] + public BackupProgress StartBackupRestoreFromForm([FromForm]BackupRestore backupRestore) + { + return StartBackupRestore(backupRestore); + } + + private BackupProgress StartBackupRestore(BackupRestore backupRestore) { if (CoreBaseSettings.Standalone) { diff --git a/common/services/ASC.Data.Backup/ModelApi/Backup.cs b/common/services/ASC.Data.Backup/ModelApi/Backup.cs index c8d8b78f6e..edd9583d3d 100644 --- a/common/services/ASC.Data.Backup/ModelApi/Backup.cs +++ b/common/services/ASC.Data.Backup/ModelApi/Backup.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using ASC.Api.Collections; -using ASC.Data.Backup.Contracts; namespace ASC.Data.Backup.Models { diff --git a/common/services/ASC.Data.Backup/ModelApi/BackupRestore.cs b/common/services/ASC.Data.Backup/ModelApi/BackupRestore.cs index 3cfb758533..f34503b7df 100644 --- a/common/services/ASC.Data.Backup/ModelApi/BackupRestore.cs +++ b/common/services/ASC.Data.Backup/ModelApi/BackupRestore.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using ASC.Api.Collections; -using ASC.Data.Backup.Contracts; namespace ASC.Data.Backup.Models { diff --git a/common/services/ASC.Data.Backup/ModelApi/BackupSchedule.cs b/common/services/ASC.Data.Backup/ModelApi/BackupSchedule.cs index 2b53ababae..3d21bea195 100644 --- a/common/services/ASC.Data.Backup/ModelApi/BackupSchedule.cs +++ b/common/services/ASC.Data.Backup/ModelApi/BackupSchedule.cs @@ -1,12 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using System.Collections.Generic; using ASC.Api.Collections; -using ASC.Data.Backup.Contracts; - -using static ASC.Data.Backup.BackupAjaxHandler; namespace ASC.Data.Backup.ModelApi { diff --git a/products/ASC.Files/Core/Model/CheckDocServiceUrlModel.cs b/products/ASC.Files/Core/Model/CheckDocServiceUrlModel.cs new file mode 100644 index 0000000000..f47c630a5d --- /dev/null +++ b/products/ASC.Files/Core/Model/CheckDocServiceUrlModel.cs @@ -0,0 +1,9 @@ +namespace ASC.Files.Core.Model +{ + public class CheckDocServiceUrlModel + { + public string DocServiceUrl { get; set; } + public string DocServiceUrlInternal { get; set; } + public string DocServiceUrlPortal { get; set; } + } +} diff --git a/products/ASC.Files/Core/Model/CreateTextOrHtmlFileModel.cs b/products/ASC.Files/Core/Model/CreateTextOrHtmlFileModel.cs new file mode 100644 index 0000000000..79f8bda381 --- /dev/null +++ b/products/ASC.Files/Core/Model/CreateTextOrHtmlFileModel.cs @@ -0,0 +1,8 @@ +namespace ASC.Files.Core.Model +{ + public class CreateTextOrHtmlFileModel + { + public string Title { get; set; } + public string Content { get; set; } + } +} diff --git a/products/ASC.Files/Core/Model/CreateWordpressPostModel.cs b/products/ASC.Files/Core/Model/CreateWordpressPostModel.cs new file mode 100644 index 0000000000..d8def65094 --- /dev/null +++ b/products/ASC.Files/Core/Model/CreateWordpressPostModel.cs @@ -0,0 +1,9 @@ +namespace ASC.Files.Core.Model +{ + public class CreateWordpressPostModel + { + public string Title { get; set; } + public string Content { get; set; } + public int Status { get; set; } + } +} diff --git a/products/ASC.Files/Core/Model/DisplayModel.cs b/products/ASC.Files/Core/Model/DisplayModel.cs new file mode 100644 index 0000000000..9e9a2f359d --- /dev/null +++ b/products/ASC.Files/Core/Model/DisplayModel.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace ASC.Files.Core.Model +{ + public class DisplayModel + { + public bool Set { get; set; } + } +} diff --git a/products/ASC.Files/Core/Model/EasyBibCitationBookModel.cs b/products/ASC.Files/Core/Model/EasyBibCitationBookModel.cs new file mode 100644 index 0000000000..8d07334f08 --- /dev/null +++ b/products/ASC.Files/Core/Model/EasyBibCitationBookModel.cs @@ -0,0 +1,7 @@ +namespace ASC.Files.Core.Model +{ + public class EasyBibCitationBookModel + { + public string CitationData { get; set; } + } +} diff --git a/products/ASC.Files/Core/Model/FileStreamModel.cs b/products/ASC.Files/Core/Model/FileStreamModel.cs new file mode 100644 index 0000000000..9937b15f4c --- /dev/null +++ b/products/ASC.Files/Core/Model/FileStreamModel.cs @@ -0,0 +1,11 @@ +using System.IO; + +namespace ASC.Files.Core.Model +{ + public class FileStreamModel + { + public Stream File { get; set; } + public bool Encrypted { get; set; } + public bool Forcesave { get; set; } + } +} diff --git a/products/ASC.Files/Core/Model/GenerateSharedLinkModel.cs b/products/ASC.Files/Core/Model/GenerateSharedLinkModel.cs new file mode 100644 index 0000000000..99b66435e1 --- /dev/null +++ b/products/ASC.Files/Core/Model/GenerateSharedLinkModel.cs @@ -0,0 +1,9 @@ +using ASC.Files.Core.Security; + +namespace ASC.Files.Core.Model +{ + public class GenerateSharedLinkModel + { + public FileShare Share { get; set; } + } +} diff --git a/products/ASC.Files/Core/Model/HideConfirmConvertModel.cs b/products/ASC.Files/Core/Model/HideConfirmConvertModel.cs new file mode 100644 index 0000000000..b7f3a462a9 --- /dev/null +++ b/products/ASC.Files/Core/Model/HideConfirmConvertModel.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace ASC.Files.Core.Model +{ + public class HideConfirmConvertModel + { + public bool Save { get; set; } + } +} diff --git a/products/ASC.Files/Core/Model/InsertFileModel.cs b/products/ASC.Files/Core/Model/InsertFileModel.cs new file mode 100644 index 0000000000..8f7b821598 --- /dev/null +++ b/products/ASC.Files/Core/Model/InsertFileModel.cs @@ -0,0 +1,12 @@ +using System.IO; + +namespace ASC.Files.Core.Model +{ + public class InsertFileModel + { + public Stream File { get; set; } + public string Title { get; set; } + public bool? CreateNewIfExist { get; set; } + public bool KeepConvertStatus { get; set; } + } +} diff --git a/products/ASC.Files/Core/Model/SaveEditingModel.cs b/products/ASC.Files/Core/Model/SaveEditingModel.cs new file mode 100644 index 0000000000..b94e8d8f42 --- /dev/null +++ b/products/ASC.Files/Core/Model/SaveEditingModel.cs @@ -0,0 +1,13 @@ +using System.IO; + +namespace ASC.Files.Core.Model +{ + public class SaveEditingModel + { + public string FileExtension { get; set; } + public string DownloadUri { get; set; } + public Stream Stream { get; set; } + public string Doc { get; set; } + public bool Forcesave { get; set; } + } +} diff --git a/products/ASC.Files/Core/Model/TemplatesModel.cs b/products/ASC.Files/Core/Model/TemplatesModel.cs new file mode 100644 index 0000000000..60b6b74646 --- /dev/null +++ b/products/ASC.Files/Core/Model/TemplatesModel.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace ASC.Files.Core.Model +{ + public class TemplatesModel + { + public IEnumerable FileIds { get; set; } + } +} diff --git a/products/ASC.Files/Core/Model/ThirdPartyModel.cs b/products/ASC.Files/Core/Model/ThirdPartyModel.cs new file mode 100644 index 0000000000..2758a84915 --- /dev/null +++ b/products/ASC.Files/Core/Model/ThirdPartyModel.cs @@ -0,0 +1,14 @@ +namespace ASC.Files.Core.Model +{ + public class ThirdPartyModel + { + public string Url { get; set; } + public string Login { get; set; } + public string Password { get; set; } + public string Token { get; set; } + public bool IsCorporate { get; set; } + public string CustomerTitle { get; set; } + public string ProviderKey { get; set; } + public string ProviderId { get; set; } + } +} diff --git a/products/ASC.Files/Core/Model/WordpressSaveModel.cs b/products/ASC.Files/Core/Model/WordpressSaveModel.cs new file mode 100644 index 0000000000..06bf7928cf --- /dev/null +++ b/products/ASC.Files/Core/Model/WordpressSaveModel.cs @@ -0,0 +1,7 @@ +namespace ASC.Files.Core.Model +{ + public class WordpressSaveModel + { + public string Code { get; set; } + } +} diff --git a/products/ASC.Files/Server/Controllers/FilesController.cs b/products/ASC.Files/Server/Controllers/FilesController.cs index b170f69cff..a47f10b93c 100644 --- a/products/ASC.Files/Server/Controllers/FilesController.cs +++ b/products/ASC.Files/Server/Controllers/FilesController.cs @@ -64,8 +64,6 @@ using Microsoft.AspNetCore.Mvc.ActionConstraints; using Newtonsoft.Json.Linq; -using FileShare = ASC.Files.Core.Security.FileShare; - namespace ASC.Api.Documents { /// @@ -403,10 +401,18 @@ namespace ASC.Api.Documents /// List of files when posted as multipart/form-data /// Uploaded file [Create("@my/upload")] - public List> UploadFileToMy(UploadModel uploadModel) + public List> UploadFileToMyFromBody([FromBody]UploadModel uploadModel) { uploadModel.CreateNewIfExist = false; - return UploadFile(GlobalFolderHelper.FolderMy, uploadModel); + return FilesControllerHelperInt.UploadFile(GlobalFolderHelper.FolderMy, uploadModel); + } + + [Create("@my/upload")] + [Consumes("application/x-www-form-urlencoded")] + public List> UploadFileToMyFromForm([FromForm]UploadModel uploadModel) + { + uploadModel.CreateNewIfExist = false; + return FilesControllerHelperInt.UploadFile(GlobalFolderHelper.FolderMy, uploadModel); } /// @@ -428,12 +434,19 @@ namespace ASC.Api.Documents /// List of files when posted as multipart/form-data /// Uploaded file [Create("@common/upload")] - public List> UploadFileToCommon(UploadModel uploadModel) + public List> UploadFileToCommonFromBody([FromBody]UploadModel uploadModel) { uploadModel.CreateNewIfExist = false; - return UploadFile(GlobalFolderHelper.FolderCommon, uploadModel); + return FilesControllerHelperInt.UploadFile(GlobalFolderHelper.FolderCommon, uploadModel); } + [Create("@common/upload")] + [Consumes("application/x-www-form-urlencoded")] + public List> UploadFileToCommonFromForm([FromForm]UploadModel uploadModel) + { + uploadModel.CreateNewIfExist = false; + return FilesControllerHelperInt.UploadFile(GlobalFolderHelper.FolderCommon, uploadModel); + } /// /// Uploads the file specified with single file upload or standart multipart/form-data method to the selected folder @@ -458,13 +471,28 @@ namespace ASC.Api.Documents /// Keep status conversation after finishing /// Uploaded file [Create("{folderId}/upload", DisableFormat = true)] - public List> UploadFile(string folderId, UploadModel uploadModel) + public List> UploadFileFromBody(string folderId, [FromBody]UploadModel uploadModel) { return FilesControllerHelperString.UploadFile(folderId, uploadModel); } + [Create("{folderId}/upload", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public List> UploadFileFromForm(string folderId, [FromForm]UploadModel uploadModel) + { + return FilesControllerHelperString.UploadFile(folderId, uploadModel); + } + + [Create("{folderId:int}/upload")] - public List> UploadFile(int folderId, UploadModel uploadModel) + public List> UploadFileFromBody(int folderId, [FromBody]UploadModel uploadModel) + { + return FilesControllerHelperInt.UploadFile(folderId, uploadModel); + } + + [Create("{folderId:int}/upload")] + [Consumes("application/x-www-form-urlencoded")] + public List> UploadFileFromForm(int folderId, [FromForm]UploadModel uploadModel) { return FilesControllerHelperInt.UploadFile(folderId, uploadModel); } @@ -479,9 +507,16 @@ namespace ASC.Api.Documents /// Uploads /// [Create("@my/insert")] - public FileWrapper InsertFileToMy(Stream file, string title, bool? createNewIfExist, bool keepConvertStatus = false) + public FileWrapper InsertFileToMyFromBody([FromBody]InsertFileModel model) { - return InsertFile(GlobalFolderHelper.FolderMy, file, title, createNewIfExist, keepConvertStatus); + return InsertFile(GlobalFolderHelper.FolderMy, model); + } + + [Create("@my/insert")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper InsertFileToMyFromForm([FromForm]InsertFileModel model) + { + return InsertFile(GlobalFolderHelper.FolderMy, model); } /// @@ -494,9 +529,16 @@ namespace ASC.Api.Documents /// Uploads /// [Create("@common/insert")] - public FileWrapper InsertFileToCommon(Stream file, string title, bool? createNewIfExist, bool keepConvertStatus = false) + public FileWrapper InsertFileToCommonFromBody([FromBody]InsertFileModel model) { - return InsertFile(GlobalFolderHelper.FolderCommon, file, title, createNewIfExist, keepConvertStatus); + return InsertFile(GlobalFolderHelper.FolderCommon, model); + } + + [Create("@common/insert")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper InsertFileToCommonFromForm([FromForm]InsertFileModel model) + { + return InsertFile(GlobalFolderHelper.FolderCommon, model); } /// @@ -510,15 +552,38 @@ namespace ASC.Api.Documents /// Uploads /// [Create("{folderId}/insert", DisableFormat = true)] - public FileWrapper InsertFile(string folderId, Stream file, string title, bool? createNewIfExist, bool keepConvertStatus = false) + public FileWrapper InsertFileFromBody(string folderId, [FromBody]InsertFileModel model) { - return FilesControllerHelperString.InsertFile(folderId, file, title, createNewIfExist, keepConvertStatus); + return InsertFile(folderId, model); + } + + [Create("{folderId}/insert", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper InsertFileFromForm(string folderId, [FromForm]InsertFileModel model) + { + return InsertFile(folderId, model); + } + + private FileWrapper InsertFile(string folderId, InsertFileModel model) + { + return FilesControllerHelperString.InsertFile(folderId, model.File, model.Title, model.CreateNewIfExist, model.KeepConvertStatus); } [Create("{folderId:int}/insert")] - public FileWrapper InsertFile(int folderId, Stream file, string title, bool? createNewIfExist, bool keepConvertStatus = false) + public FileWrapper InsertFileFromBody(int folderId, [FromBody]InsertFileModel model) { - return FilesControllerHelperInt.InsertFile(folderId, file, title, createNewIfExist, keepConvertStatus); + return InsertFile(folderId, model); + } + + [Create("{folderId:int}/insert")] + public FileWrapper InsertFileFromForm(int folderId, [FromForm]InsertFileModel model) + { + return InsertFile(folderId, model); + } + + private FileWrapper InsertFile(int folderId, InsertFileModel model) + { + return FilesControllerHelperInt.InsertFile(folderId, model.File, model.Title, model.CreateNewIfExist, model.KeepConvertStatus); } /// @@ -530,15 +595,29 @@ namespace ASC.Api.Documents /// /// false [Update("{fileId}/update", DisableFormat = true)] - public FileWrapper UpdateFileStream(Stream file, string fileId, bool encrypted = false, bool forcesave = false) + public FileWrapper UpdateFileStreamFromBody(string fileId, [FromBody]FileStreamModel model) { - return FilesControllerHelperString.UpdateFileStream(file, fileId, encrypted, forcesave); + return FilesControllerHelperString.UpdateFileStream(model.File, fileId, model.Encrypted, model.Forcesave); + } + + [Update("{fileId}/update", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper UpdateFileStreamFromForm(string fileId, [FromForm]FileStreamModel model) + { + return FilesControllerHelperString.UpdateFileStream(model.File, fileId, model.Encrypted, model.Forcesave); } [Update("{fileId:int}/update")] - public FileWrapper UpdateFileStream(Stream file, int fileId, bool encrypted = false, bool forcesave = false) + public FileWrapper UpdateFileStreamFromBody(int fileId, [FromBody]FileStreamModel model) { - return FilesControllerHelperInt.UpdateFileStream(file, fileId, encrypted, forcesave); + return FilesControllerHelperInt.UpdateFileStream(model.File, fileId, model.Encrypted, model.Forcesave); + } + + [Update("{fileId:int}/update")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper UpdateFileStreamFromForm(int fileId, [FromForm]FileStreamModel model) + { + return FilesControllerHelperInt.UpdateFileStream(model.File, fileId, model.Encrypted, model.Forcesave); } @@ -554,15 +633,29 @@ namespace ASC.Api.Documents /// Files /// [Update("file/{fileId}/saveediting", DisableFormat = true)] - public FileWrapper SaveEditing(string fileId, string fileExtension, string downloadUri, Stream stream, string doc, bool forcesave) + public FileWrapper SaveEditingFromBody(string fileId, [FromBody]SaveEditingModel model) { - return FilesControllerHelperString.SaveEditing(fileId, fileExtension, downloadUri, stream, doc, forcesave); + return FilesControllerHelperString.SaveEditing(fileId, model.FileExtension, model.DownloadUri, model.Stream, model.Doc, model.Forcesave); + } + + [Update("file/{fileId}/saveediting", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper SaveEditingFromForm(string fileId, [FromForm]SaveEditingModel model) + { + return FilesControllerHelperString.SaveEditing(fileId, model.FileExtension, model.DownloadUri, model.Stream, model.Doc, model.Forcesave); } [Update("file/{fileId:int}/saveediting")] - public FileWrapper SaveEditing(int fileId, string fileExtension, string downloadUri, Stream stream, string doc, bool forcesave) + public FileWrapper SaveEditingFromBody(int fileId, [FromBody]SaveEditingModel model) { - return FilesControllerHelperInt.SaveEditing(fileId, fileExtension, downloadUri, stream, doc, forcesave); + return FilesControllerHelperInt.SaveEditing(fileId, model.FileExtension, model.DownloadUri, model.Stream, model.Doc, model.Forcesave); + } + + [Update("file/{fileId:int}/saveediting")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper SaveEditingFromForm(int fileId, [FromForm]SaveEditingModel model) + { + return FilesControllerHelperInt.SaveEditing(fileId, model.FileExtension, model.DownloadUri, model.Stream, model.Doc, model.Forcesave); } /// @@ -574,13 +667,27 @@ namespace ASC.Api.Documents /// Files /// [Create("file/{fileId}/startedit", DisableFormat = true)] - public object StartEdit(string fileId, StartEditModel model) + public object StartEditFromBody(string fileId, [FromBody]StartEditModel model) + { + return FilesControllerHelperString.StartEdit(fileId, model.EditingAlone, model.Doc); + } + + [Create("file/{fileId}/startedit", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public object StartEditFromForm(string fileId, [FromForm]StartEditModel model) { return FilesControllerHelperString.StartEdit(fileId, model.EditingAlone, model.Doc); } [Create("file/{fileId:int}/startedit")] - public object StartEdit(int fileId, StartEditModel model) + public object StartEditFromBody(int fileId, [FromBody]StartEditModel model) + { + return FilesControllerHelperInt.StartEdit(fileId, model.EditingAlone, model.Doc); + } + + [Create("file/{fileId:int}/startedit")] + [Consumes("application/x-www-form-urlencoded")] + public object StartEditFromForm(int fileId, [FromForm]StartEditModel model) { return FilesControllerHelperInt.StartEdit(fileId, model.EditingAlone, model.Doc); } @@ -661,13 +768,27 @@ namespace ASC.Api.Documents /// ]]> /// [Create("{folderId}/upload/create_session", DisableFormat = true)] - public object CreateUploadSession(string folderId, SessionModel sessionModel) + public object CreateUploadSessionFromBody(string folderId, [FromBody]SessionModel sessionModel) + { + return FilesControllerHelperString.CreateUploadSession(folderId, sessionModel.FileName, sessionModel.FileSize, sessionModel.RelativePath, sessionModel.Encrypted); + } + + [Create("{folderId}/upload/create_session", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public object CreateUploadSessionFromForm(string folderId, [FromForm]SessionModel sessionModel) { return FilesControllerHelperString.CreateUploadSession(folderId, sessionModel.FileName, sessionModel.FileSize, sessionModel.RelativePath, sessionModel.Encrypted); } [Create("{folderId:int}/upload/create_session")] - public object CreateUploadSession(int folderId, SessionModel sessionModel) + public object CreateUploadSessionFromBody(int folderId, [FromBody]SessionModel sessionModel) + { + return FilesControllerHelperInt.CreateUploadSession(folderId, sessionModel.FileName, sessionModel.FileSize, sessionModel.RelativePath, sessionModel.Encrypted); + } + + [Create("{folderId:int}/upload/create_session")] + [Consumes("application/x-www-form-urlencoded")] + public object CreateUploadSessionFromForm(int folderId, [FromForm]SessionModel sessionModel) { return FilesControllerHelperInt.CreateUploadSession(folderId, sessionModel.FileName, sessionModel.FileSize, sessionModel.RelativePath, sessionModel.Encrypted); } @@ -681,9 +802,16 @@ namespace ASC.Api.Documents /// File contents /// Folder contents [Create("@my/text")] - public FileWrapper CreateTextFileInMy(string title, string content) + public FileWrapper CreateTextFileInMyFromBody([FromBody]CreateTextOrHtmlFileModel model) { - return CreateTextFile(GlobalFolderHelper.FolderMy, title, content); + return CreateTextFile(GlobalFolderHelper.FolderMy, model); + } + + [Create("@my/text")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper CreateTextFileInMyFromForm([FromForm]CreateTextOrHtmlFileModel model) + { + return CreateTextFile(GlobalFolderHelper.FolderMy, model); } /// @@ -695,9 +823,16 @@ namespace ASC.Api.Documents /// File contents /// Folder contents [Create("@common/text")] - public FileWrapper CreateTextFileInCommon(string title, string content) + public FileWrapper CreateTextFileInCommonFromBody([FromBody]CreateTextOrHtmlFileModel model) { - return CreateTextFile(GlobalFolderHelper.FolderCommon, title, content); + return CreateTextFile(GlobalFolderHelper.FolderCommon, model); + } + + [Create("@common/text")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper CreateTextFileInCommonFromForm([FromForm]CreateTextOrHtmlFileModel model) + { + return CreateTextFile(GlobalFolderHelper.FolderCommon, model); } /// @@ -710,15 +845,38 @@ namespace ASC.Api.Documents /// File contents /// Folder contents [Create("{folderId}/text", DisableFormat = true)] - public FileWrapper CreateTextFile(string folderId, string title, string content) + public FileWrapper CreateTextFileFromBody(string folderId, [FromBody]CreateTextOrHtmlFileModel model) { - return FilesControllerHelperString.CreateTextFile(folderId, title, content); + return CreateTextFile(folderId, model); + } + + [Create("{folderId}/text", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper CreateTextFileFromForm(string folderId, [FromForm]CreateTextOrHtmlFileModel model) + { + return CreateTextFile(folderId, model); + } + + private FileWrapper CreateTextFile(string folderId, CreateTextOrHtmlFileModel model) + { + return FilesControllerHelperString.CreateTextFile(folderId, model.Title, model.Content); } [Create("{folderId:int}/text")] - public FileWrapper CreateTextFile(int folderId, string title, string content) + public FileWrapper CreateTextFileFromBody(int folderId, [FromBody]CreateTextOrHtmlFileModel model) { - return FilesControllerHelperInt.CreateTextFile(folderId, title, content); + return CreateTextFile(folderId, model); + } + + [Create("{folderId:int}/text")] + public FileWrapper CreateTextFileFromForm(int folderId, [FromForm]CreateTextOrHtmlFileModel model) + { + return CreateTextFile(folderId, model); + } + + private FileWrapper CreateTextFile(int folderId, CreateTextOrHtmlFileModel model) + { + return FilesControllerHelperInt.CreateTextFile(folderId, model.Title, model.Content); } /// @@ -731,15 +889,39 @@ namespace ASC.Api.Documents /// File contents /// Folder contents [Create("{folderId}/html", DisableFormat = true)] - public FileWrapper CreateHtmlFile(string folderId, string title, string content) + public FileWrapper CreateHtmlFileFromBody(string folderId, [FromBody]CreateTextOrHtmlFileModel model) { - return FilesControllerHelperString.CreateHtmlFile(folderId, title, content); + return CreateHtmlFile(folderId, model); + } + + [Create("{folderId}/html", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper CreateHtmlFileFromForm(string folderId, [FromForm]CreateTextOrHtmlFileModel model) + { + return CreateHtmlFile(folderId, model); + } + + private FileWrapper CreateHtmlFile(string folderId, CreateTextOrHtmlFileModel model) + { + return FilesControllerHelperString.CreateHtmlFile(folderId, model.Title, model.Content); } [Create("{folderId:int}/html")] - public FileWrapper CreateHtmlFile(int folderId, string title, string content) + public FileWrapper CreateHtmlFileFromBody(int folderId, [FromBody]CreateTextOrHtmlFileModel model) { - return FilesControllerHelperInt.CreateHtmlFile(folderId, title, content); + return CreateHtmlFile(folderId, model); + } + + [Create("{folderId:int}/html")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper CreateHtmlFileFromForm(int folderId, [FromForm] CreateTextOrHtmlFileModel model) + { + return CreateHtmlFile(folderId, model); + } + + private FileWrapper CreateHtmlFile(int folderId, CreateTextOrHtmlFileModel model) + { + return FilesControllerHelperInt.CreateHtmlFile(folderId, model.Title, model.Content); } /// @@ -751,11 +933,17 @@ namespace ASC.Api.Documents /// File contents /// Folder contents [Create("@my/html")] - public FileWrapper CreateHtmlFileInMy(string title, string content) + public FileWrapper CreateHtmlFileInMyFromBody([FromBody]CreateTextOrHtmlFileModel model) { - return CreateHtmlFile(GlobalFolderHelper.FolderMy, title, content); + return CreateHtmlFile(GlobalFolderHelper.FolderMy, model); } + [Create("@my/html")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper CreateHtmlFileInMyFromForm([FromForm]CreateTextOrHtmlFileModel model) + { + return CreateHtmlFile(GlobalFolderHelper.FolderMy, model); + } /// /// Creates an html (.html) file in 'Common Documents' section with the title and contents sent in the request @@ -766,11 +954,17 @@ namespace ASC.Api.Documents /// File contents /// Folder contents [Create("@common/html")] - public FileWrapper CreateHtmlFileInCommon(string title, string content) + public FileWrapper CreateHtmlFileInCommonFromBody([FromBody]CreateTextOrHtmlFileModel model) { - return CreateHtmlFile(GlobalFolderHelper.FolderCommon, title, content); + return CreateHtmlFile(GlobalFolderHelper.FolderCommon, model); } + [Create("@common/html")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper CreateHtmlFileInCommonFromForm([FromForm]CreateTextOrHtmlFileModel model) + { + return CreateHtmlFile(GlobalFolderHelper.FolderCommon, model); + } /// /// Creates a new folder with the title sent in the request. The ID of a parent folder can be also specified. @@ -783,17 +977,30 @@ namespace ASC.Api.Documents /// Title of new folder /// New folder contents [Create("folder/{folderId}", DisableFormat = true)] - public FolderWrapper CreateFolder(string folderId, CreateFolderModel folderModel) + public FolderWrapper CreateFolderFromBody(string folderId, [FromBody]CreateFolderModel folderModel) + { + return FilesControllerHelperString.CreateFolder(folderId, folderModel.Title); + } + + [Create("folder/{folderId}", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public FolderWrapper CreateFolderFromForm(string folderId, [FromForm]CreateFolderModel folderModel) { return FilesControllerHelperString.CreateFolder(folderId, folderModel.Title); } [Create("folder/{folderId:int}")] - public FolderWrapper CreateFolder(int folderId, CreateFolderModel folderModel) + public FolderWrapper CreateFolderFromBody(int folderId, [FromBody]CreateFolderModel folderModel) { return FilesControllerHelperInt.CreateFolder(folderId, folderModel.Title); } + [Create("folder/{folderId:int}")] + [Consumes("application/x-www-form-urlencoded")] + public FolderWrapper CreateFolderFromForm(int folderId, [FromForm]CreateFolderModel folderModel) + { + return FilesControllerHelperInt.CreateFolder(folderId, folderModel.Title); + } /// /// Creates a new file in the 'My Documents' section with the title sent in the request @@ -804,9 +1011,16 @@ namespace ASC.Api.Documents /// In case the extension for the file title differs from DOCX/XLSX/PPTX and belongs to one of the known text, spreadsheet or presentation formats, it will be changed to DOCX/XLSX/PPTX accordingly. If the file extension is not set or is unknown, the DOCX extension will be added to the file title. /// New file info [Create("@my/file")] - public FileWrapper CreateFile(CreateFileModel model) + public FileWrapper CreateFileFromBody([FromBody]CreateFileModel model) { - return CreateFile(GlobalFolderHelper.FolderMy, model); + return FilesControllerHelperInt.CreateFile(GlobalFolderHelper.FolderMy, model.Title, model.TemplateId); + } + + [Create("@my/file")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper CreateFileFromForm([FromForm]CreateFileModel model) + { + return FilesControllerHelperInt.CreateFile(GlobalFolderHelper.FolderMy, model.Title, model.TemplateId); } /// @@ -819,13 +1033,27 @@ namespace ASC.Api.Documents /// In case the extension for the file title differs from DOCX/XLSX/PPTX and belongs to one of the known text, spreadsheet or presentation formats, it will be changed to DOCX/XLSX/PPTX accordingly. If the file extension is not set or is unknown, the DOCX extension will be added to the file title. /// New file info [Create("{folderId}/file", DisableFormat = true)] - public FileWrapper CreateFile(string folderId, CreateFileModel model) + public FileWrapper CreateFileFromBody(string folderId, [FromBody]CreateFileModel model) + { + return FilesControllerHelperString.CreateFile(folderId, model.Title, model.TemplateId); + } + + [Create("{folderId}/file", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper CreateFileFromForm(string folderId, [FromForm]CreateFileModel model) { return FilesControllerHelperString.CreateFile(folderId, model.Title, model.TemplateId); } [Create("{folderId:int}/file")] - public FileWrapper CreateFile(int folderId, CreateFileModel model) + public FileWrapper CreateFileFromBody(int folderId, [FromBody]CreateFileModel model) + { + return FilesControllerHelperInt.CreateFile(folderId, model.Title, model.TemplateId); + } + + [Create("{folderId:int}/file")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper CreateFileFromForm(int folderId, [FromForm]CreateFileModel model) { return FilesControllerHelperInt.CreateFile(folderId, model.Title, model.TemplateId); } @@ -841,13 +1069,27 @@ namespace ASC.Api.Documents /// New title /// Folder contents [Update("folder/{folderId}", DisableFormat = true)] - public FolderWrapper RenameFolder(string folderId, CreateFolderModel folderModel) + public FolderWrapper RenameFolderFromBody(string folderId, [FromBody]CreateFolderModel folderModel) + { + return FilesControllerHelperString.RenameFolder(folderId, folderModel.Title); + } + + [Update("folder/{folderId}", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public FolderWrapper RenameFolderFromForm(string folderId, [FromForm]CreateFolderModel folderModel) { return FilesControllerHelperString.RenameFolder(folderId, folderModel.Title); } [Update("folder/{folderId:int}")] - public FolderWrapper RenameFolder(int folderId, CreateFolderModel folderModel) + public FolderWrapper RenameFolderFromBody(int folderId, [FromBody]CreateFolderModel folderModel) + { + return FilesControllerHelperInt.RenameFolder(folderId, folderModel.Title); + } + + [Update("folder/{folderId:int}")] + [Consumes("application/x-www-form-urlencoded")] + public FolderWrapper RenameFolderFromForm(int folderId, [FromForm]CreateFolderModel folderModel) { return FilesControllerHelperInt.RenameFolder(folderId, folderModel.Title); } @@ -916,13 +1158,27 @@ namespace ASC.Api.Documents /// File last version number /// File info [Update("file/{fileId}", DisableFormat = true)] - public FileWrapper UpdateFile(string fileId, UpdateFileModel model) + public FileWrapper UpdateFileFromBody(string fileId, [FromBody]UpdateFileModel model) + { + return FilesControllerHelperString.UpdateFile(fileId, model.Title, model.LastVersion); + } + + [Update("file/{fileId}", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper UpdateFileFromForm(string fileId, [FromForm]UpdateFileModel model) { return FilesControllerHelperString.UpdateFile(fileId, model.Title, model.LastVersion); } [Update("file/{fileId:int}")] - public FileWrapper UpdateFile(int fileId, UpdateFileModel model) + public FileWrapper UpdateFileFromBody(int fileId, [FromBody]UpdateFileModel model) + { + return FilesControllerHelperInt.UpdateFile(fileId, model.Title, model.LastVersion); + } + + [Update("file/{fileId:int}")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper UpdateFileFromForm(int fileId, [FromForm]UpdateFileModel model) { return FilesControllerHelperInt.UpdateFile(fileId, model.Title, model.LastVersion); } @@ -1017,7 +1273,14 @@ namespace ASC.Api.Documents /// File ID list /// Conflicts file ids [Read("fileops/move")] - public IEnumerable MoveOrCopyBatchCheck(BatchModel batchModel) + public IEnumerable MoveOrCopyBatchCheckFromBody([FromBody]BatchModel batchModel) + { + return FilesControllerHelperString.MoveOrCopyBatchCheck(batchModel); + } + + [Read("fileops/move")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable MoveOrCopyBatchCheckFromForm([FromForm]BatchModel batchModel) { return FilesControllerHelperString.MoveOrCopyBatchCheck(batchModel); } @@ -1034,7 +1297,14 @@ namespace ASC.Api.Documents /// Delete after finished /// Operation result [Update("fileops/move")] - public IEnumerable MoveBatchItems(BatchModel batchModel) + public IEnumerable MoveBatchItemsFromBody([FromBody]BatchModel batchModel) + { + return FilesControllerHelperString.MoveBatchItems(batchModel); + } + + [Update("fileops/move")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable MoveBatchItemsFromForm([FromForm]BatchModel batchModel) { return FilesControllerHelperString.MoveBatchItems(batchModel); } @@ -1051,7 +1321,14 @@ namespace ASC.Api.Documents /// Delete after finished /// Operation result [Update("fileops/copy")] - public IEnumerable CopyBatchItems(BatchModel batchModel) + public IEnumerable CopyBatchItemsFromBody([FromBody]BatchModel batchModel) + { + return FilesControllerHelperString.CopyBatchItems(batchModel); + } + + [Update("fileops/copy")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable CopyBatchItemsFromForm([FromForm]BatchModel batchModel) { return FilesControllerHelperString.CopyBatchItems(batchModel); } @@ -1063,7 +1340,14 @@ namespace ASC.Api.Documents /// File operations /// Operation result [Update("fileops/markasread")] - public IEnumerable MarkAsRead(BaseBatchModel model) + public IEnumerable MarkAsReadFromBody([FromBody]BaseBatchModel model) + { + return FilesControllerHelperString.MarkAsRead(model); + } + + [Update("fileops/markasread")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable MarkAsReadFromForm([FromForm]BaseBatchModel model) { return FilesControllerHelperString.MarkAsRead(model); } @@ -1103,7 +1387,14 @@ namespace ASC.Api.Documents /// File operations /// Operation result [Update("fileops/bulkdownload")] - public IEnumerable BulkDownload(DownloadModel model) + public IEnumerable BulkDownload([FromBody]DownloadModel model) + { + return FilesControllerHelperString.BulkDownload(model); + } + + [Update("fileops/bulkdownload")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable BulkDownloadFromForm([FromForm]DownloadModel model) { return FilesControllerHelperString.BulkDownload(model); } @@ -1119,7 +1410,15 @@ namespace ASC.Api.Documents /// File operations /// Operation result [Update("fileops/delete")] - public IEnumerable DeleteBatchItems(DeleteBatchModel batch) + public IEnumerable DeleteBatchItemsFromBody([FromBody]DeleteBatchModel batch) + { + return FileStorageService.DeleteItems("delete", batch.FileIds.ToList(), batch.FolderIds.ToList(), false, batch.DeleteAfter, batch.Immediately) + .Select(FileOperationWraperHelper.Get); + } + + [Update("fileops/delete")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable DeleteBatchItemsFromForm([FromForm]DeleteBatchModel batch) { return FileStorageService.DeleteItems("delete", batch.FileIds.ToList(), batch.FolderIds.ToList(), false, batch.DeleteAfter, batch.Immediately) .Select(FileOperationWraperHelper.Get); @@ -1165,37 +1464,79 @@ namespace ASC.Api.Documents /// Files /// [Update("file/{fileId}/history", DisableFormat = true)] - public IEnumerable> ChangeHistory(string fileId, ChangeHistoryModel model) + public IEnumerable> ChangeHistoryFromBody(string fileId, [FromBody]ChangeHistoryModel model) + { + return FilesControllerHelperString.ChangeHistory(fileId, model.Version, model.ContinueVersion); + } + + [Update("file/{fileId}/history", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable> ChangeHistoryFromForm(string fileId, [FromForm]ChangeHistoryModel model) { return FilesControllerHelperString.ChangeHistory(fileId, model.Version, model.ContinueVersion); } [Update("file/{fileId:int}/history")] - public IEnumerable> ChangeHistory(int fileId, ChangeHistoryModel model) + public IEnumerable> ChangeHistoryFromBody(int fileId, [FromBody]ChangeHistoryModel model) + { + return FilesControllerHelperInt.ChangeHistory(fileId, model.Version, model.ContinueVersion); + } + + [Update("file/{fileId:int}/history")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable> ChangeHistoryFromForm(int fileId, [FromForm]ChangeHistoryModel model) { return FilesControllerHelperInt.ChangeHistory(fileId, model.Version, model.ContinueVersion); } [Update("file/{fileId}/lock", DisableFormat = true)] - public FileWrapper LockFile(string fileId, LockFileModel model) + public FileWrapper LockFileFromBody(string fileId, [FromBody]LockFileModel model) + { + return FilesControllerHelperString.LockFile(fileId, model.LockFile); + } + + [Update("file/{fileId}/lock", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper LockFileFromForm(string fileId, [FromForm]LockFileModel model) { return FilesControllerHelperString.LockFile(fileId, model.LockFile); } [Update("file/{fileId:int}/lock")] - public FileWrapper LockFile(int fileId, LockFileModel model) + public FileWrapper LockFileFromBody(int fileId, [FromBody]LockFileModel model) + { + return FilesControllerHelperInt.LockFile(fileId, model.LockFile); + } + + [Update("file/{fileId:int}/lock")] + [Consumes("application/x-www-form-urlencoded")] + public FileWrapper LockFileFromForm(int fileId, [FromForm]LockFileModel model) { return FilesControllerHelperInt.LockFile(fileId, model.LockFile); } [Update("file/{fileId}/comment", DisableFormat = true)] - public object UpdateComment(string fileId, UpdateCommentModel model) + public object UpdateCommentFromBody(string fileId, [FromBody]UpdateCommentModel model) + { + return FilesControllerHelperString.UpdateComment(fileId, model.Version, model.Comment); + } + + [Update("file/{fileId}/comment", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public object UpdateCommentFromForm(string fileId, [FromForm]UpdateCommentModel model) { return FilesControllerHelperString.UpdateComment(fileId, model.Version, model.Comment); } [Update("file/{fileId:int}/comment")] - public object UpdateComment(int fileId, UpdateCommentModel model) + public object UpdateCommentFromBody(int fileId, [FromBody]UpdateCommentModel model) + { + return FilesControllerHelperInt.UpdateComment(fileId, model.Version, model.Comment); + } + + [Update("file/{fileId:int}/comment")] + [Consumes("application/x-www-form-urlencoded")] + public object UpdateCommentFromForm(int fileId, [FromForm]UpdateCommentModel model) { return FilesControllerHelperInt.UpdateComment(fileId, model.Version, model.Comment); } @@ -1252,13 +1593,27 @@ namespace ASC.Api.Documents /// /// Shared file information [Update("file/{fileId}/share", DisableFormat = true)] - public IEnumerable SetFileSecurityInfo(string fileId, SecurityInfoModel model) + public IEnumerable SetFileSecurityInfoFromBody(string fileId, [FromBody]SecurityInfoModel model) + { + return FilesControllerHelperString.SetFileSecurityInfo(fileId, model.Share, model.Notify, model.SharingMessage); + } + + [Update("file/{fileId}/share", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable SetFileSecurityInfoFromForm(string fileId, [FromForm]SecurityInfoModel model) { return FilesControllerHelperString.SetFileSecurityInfo(fileId, model.Share, model.Notify, model.SharingMessage); } [Update("file/{fileId:int}/share")] - public IEnumerable SetFileSecurityInfo(int fileId, SecurityInfoModel model) + public IEnumerable SetFileSecurityInfoFromBody(int fileId, [FromBody]SecurityInfoModel model) + { + return FilesControllerHelperInt.SetFileSecurityInfo(fileId, model.Share, model.Notify, model.SharingMessage); + } + + [Update("file/{fileId:int}/share")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable SetFileSecurityInfoFromForm(int fileId, [FromForm]SecurityInfoModel model) { return FilesControllerHelperInt.SetFileSecurityInfo(fileId, model.Share, model.Notify, model.SharingMessage); } @@ -1277,12 +1632,27 @@ namespace ASC.Api.Documents /// Sharing /// Shared folder information [Update("folder/{folderId}/share", DisableFormat = true)] - public IEnumerable SetFolderSecurityInfo(string folderId, SecurityInfoModel model) + public IEnumerable SetFolderSecurityInfoFromBody(string folderId, [FromBody]SecurityInfoModel model) { return FilesControllerHelperString.SetFolderSecurityInfo(folderId, model.Share, model.Notify, model.SharingMessage); } + + [Update("folder/{folderId}/share", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable SetFolderSecurityInfoFromForm(string folderId, [FromForm]SecurityInfoModel model) + { + return FilesControllerHelperString.SetFolderSecurityInfo(folderId, model.Share, model.Notify, model.SharingMessage); + } + [Update("folder/{folderId:int}/share")] - public IEnumerable SetFolderSecurityInfo(int folderId, SecurityInfoModel model) + public IEnumerable SetFolderSecurityInfoFromBody(int folderId, [FromBody]SecurityInfoModel model) + { + return FilesControllerHelperInt.SetFolderSecurityInfo(folderId, model.Share, model.Notify, model.SharingMessage); + } + + [Update("folder/{folderId:int}/share")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable SetFolderSecurityInfoFromForm(int folderId, [FromForm]SecurityInfoModel model) { return FilesControllerHelperInt.SetFolderSecurityInfo(folderId, model.Share, model.Notify, model.SharingMessage); } @@ -1314,15 +1684,29 @@ namespace ASC.Api.Documents /// Files /// Shared file link [Update("{fileId}/sharedlink", DisableFormat = true)] - public object GenerateSharedLink(string fileId, FileShare share) + public object GenerateSharedLinkFromBody(string fileId, [FromBody]GenerateSharedLinkModel model) { - return FilesControllerHelperString.GenerateSharedLink(fileId, share); + return FilesControllerHelperString.GenerateSharedLink(fileId, model.Share); + } + + [Update("{fileId}/sharedlink", DisableFormat = true)] + [Consumes("application/x-www-form-urlencoded")] + public object GenerateSharedLinkFromForm(string fileId, [FromForm]GenerateSharedLinkModel model) + { + return FilesControllerHelperString.GenerateSharedLink(fileId, model.Share); } [Update("{fileId:int}/sharedlink")] - public object GenerateSharedLink(int fileId, FileShare share) + public object GenerateSharedLinkFromBody(int fileId, [FromBody]GenerateSharedLinkModel model) { - return FilesControllerHelperInt.GenerateSharedLink(fileId, share); + return FilesControllerHelperInt.GenerateSharedLink(fileId, model.Share); + } + + [Update("{fileId:int}/sharedlink")] + [Consumes("application/x-www-form-urlencoded")] + public object GenerateSharedLinkFromForm(int fileId, [FromForm] GenerateSharedLinkModel model) + { + return FilesControllerHelperInt.GenerateSharedLink(fileId, model.Share); } /// @@ -1364,23 +1748,27 @@ namespace ASC.Api.Documents /// List of provider key: DropboxV2, Box, WebDav, Yandex, OneDrive, SharePoint, GoogleDrive /// [Create("thirdparty")] - public FolderWrapper SaveThirdParty( - string url, - string login, - string password, - string token, - bool isCorporate, - string customerTitle, - string providerKey, - string providerId) + public FolderWrapper SaveThirdPartyFromBody([FromBody]ThirdPartyModel model) + { + return SaveThirdParty(model); + } + + [Create("thirdparty")] + [Consumes("application/x-www-form-urlencoded")] + public FolderWrapper SaveThirdPartyFromForm([FromForm]ThirdPartyModel model) + { + return SaveThirdParty(model); + } + + private FolderWrapper SaveThirdParty(ThirdPartyModel model) { var thirdPartyParams = new ThirdPartyParams { - AuthData = new AuthData(url, login, password, token), - Corporate = isCorporate, - CustomerTitle = customerTitle, - ProviderId = providerId, - ProviderKey = providerKey, + AuthData = new AuthData(model.Url, model.Login, model.Password, model.Token), + Corporate = model.IsCorporate, + CustomerTitle = model.CustomerTitle, + ProviderId = model.ProviderId, + ProviderKey = model.ProviderKey, }; var folder = FileStorageService.SaveThirdParty(thirdPartyParams); @@ -1454,7 +1842,19 @@ namespace ASC.Api.Documents /// File IDs /// [Create("favorites")] - public bool AddFavorites(BaseBatchModel model) + public bool AddFavoritesFromBody([FromBody]BaseBatchModel model) + { + return AddFavorites(model); + } + + [Create("favorites")] + [Consumes("application/x-www-form-urlencoded")] + public bool AddFavoritesFromForm([FromForm]BaseBatchModel model) + { + return AddFavorites(model); + } + + private bool AddFavorites(BaseBatchModel model) { FileStorageServiceInt.AddToFavorites(model.FolderIds.Where(r => r.ValueKind == JsonValueKind.Number).Select(r => r.GetInt32()), model.FileIds.Where(r => r.ValueKind == JsonValueKind.Number).Select(r => r.GetInt32())); FileStorageService.AddToFavorites(model.FolderIds.Where(r => r.ValueKind == JsonValueKind.String).Select(r => r.GetString()), model.FileIds.Where(r => r.ValueKind == JsonValueKind.String).Select(r => r.GetString())); @@ -1485,9 +1885,17 @@ namespace ASC.Api.Documents /// File IDs /// [Create("templates")] - public bool AddTemplates(IEnumerable fileIds) + public bool AddTemplatesFromBody([FromBody]TemplatesModel model) { - FileStorageServiceInt.AddToTemplates(fileIds); + FileStorageServiceInt.AddToTemplates(model.FileIds); + return true; + } + + [Create("templates")] + [Consumes("application/x-www-form-urlencoded")] + public bool AddTemplatesFromForm([FromForm]TemplatesModel model) + { + FileStorageServiceInt.AddToTemplates(model.FileIds); return true; } @@ -1511,7 +1919,14 @@ namespace ASC.Api.Documents /// /// [Update(@"storeoriginal")] - public bool StoreOriginal(SettingsModel model) + public bool StoreOriginalFromBody([FromBody]SettingsModel model) + { + return FileStorageService.StoreOriginal(model.Set); + } + + [Update(@"storeoriginal")] + [Consumes("application/x-www-form-urlencoded")] + public bool StoreOriginalFromForm([FromForm]SettingsModel model) { return FileStorageService.StoreOriginal(model.Set); } @@ -1541,11 +1956,17 @@ namespace ASC.Api.Documents /// false /// [Update(@"hideconfirmconvert")] - public bool HideConfirmConvert(bool save) + public bool HideConfirmConvertFromBody([FromBody]HideConfirmConvertModel model) { - return FileStorageService.HideConfirmConvert(save); + return FileStorageService.HideConfirmConvert(model.Save); } + [Update(@"hideconfirmconvert")] + [Consumes("application/x-www-form-urlencoded")] + public bool HideConfirmConvertFromForm([FromForm]HideConfirmConvertModel model) + { + return FileStorageService.HideConfirmConvert(model.Save); + } /// /// @@ -1553,7 +1974,14 @@ namespace ASC.Api.Documents /// /// [Update(@"updateifexist")] - public bool UpdateIfExist(SettingsModel model) + public bool UpdateIfExistFromBody([FromBody]SettingsModel model) + { + return FileStorageService.UpdateIfExist(model.Set); + } + + [Update(@"updateifexist")] + [Consumes("application/x-www-form-urlencoded")] + public bool UpdateIfExistFromForm([FromForm]SettingsModel model) { return FileStorageService.UpdateIfExist(model.Set); } @@ -1564,7 +1992,14 @@ namespace ASC.Api.Documents /// /// [Update(@"changedeleteconfrim")] - public bool ChangeDeleteConfrim(SettingsModel model) + public bool ChangeDeleteConfrimFromBody([FromBody]SettingsModel model) + { + return FileStorageService.ChangeDeleteConfrim(model.Set); + } + + [Update(@"changedeleteconfrim")] + [Consumes("application/x-www-form-urlencoded")] + public bool ChangeDeleteConfrimFromForm([FromForm]SettingsModel model) { return FileStorageService.ChangeDeleteConfrim(model.Set); } @@ -1575,7 +2010,14 @@ namespace ASC.Api.Documents /// /// [Update(@"storeforcesave")] - public bool StoreForcesave(SettingsModel model) + public bool StoreForcesaveFromBody([FromBody]SettingsModel model) + { + return FileStorageService.StoreForcesave(model.Set); + } + + [Update(@"storeforcesave")] + [Consumes("application/x-www-form-urlencoded")] + public bool StoreForcesaveFromForm([FromForm]SettingsModel model) { return FileStorageService.StoreForcesave(model.Set); } @@ -1586,7 +2028,14 @@ namespace ASC.Api.Documents /// /// [Update(@"forcesave")] - public bool Forcesave(SettingsModel model) + public bool ForcesaveFromBody([FromBody]SettingsModel model) + { + return FileStorageService.Forcesave(model.Set); + } + + [Update(@"forcesave")] + [Consumes("application/x-www-form-urlencoded")] + public bool ForcesaveFromForm([FromForm]SettingsModel model) { return FileStorageService.Forcesave(model.Set); } @@ -1597,7 +2046,14 @@ namespace ASC.Api.Documents /// /// [Update(@"thirdparty")] - public bool ChangeAccessToThirdparty(SettingsModel model) + public bool ChangeAccessToThirdpartyFromBody([FromBody]SettingsModel model) + { + return FileStorageService.ChangeAccessToThirdparty(model.Set); + } + + [Update(@"thirdparty")] + [Consumes("application/x-www-form-urlencoded")] + public bool ChangeAccessToThirdpartyFromForm([FromForm]SettingsModel model) { return FileStorageService.ChangeAccessToThirdparty(model.Set); } @@ -1609,9 +2065,16 @@ namespace ASC.Api.Documents /// Settings /// [Update(@"displayRecent")] - public bool DisplayRecent(bool set) + public bool DisplayRecentFromBody([FromBody]DisplayModel model) { - return FileStorageService.DisplayRecent(set); + return FileStorageService.DisplayRecent(model.Set); + } + + [Update(@"displayRecent")] + [Consumes("application/x-www-form-urlencoded")] + public bool DisplayRecentFromForm([FromForm]DisplayModel model) + { + return FileStorageService.DisplayRecent(model.Set); } /// @@ -1621,9 +2084,16 @@ namespace ASC.Api.Documents /// Settings /// [Update(@"settings/favorites")] - public bool DisplayFavorite(bool set) + public bool DisplayFavoriteFromBody([FromBody]DisplayModel model) { - return FileStorageService.DisplayFavorite(set); + return FileStorageService.DisplayFavorite(model.Set); + } + + [Update(@"settings/favorites")] + [Consumes("application/x-www-form-urlencoded")] + public bool DisplayFavoriteFromForm([FromForm]DisplayModel model) + { + return FileStorageService.DisplayFavorite(model.Set); } /// @@ -1633,9 +2103,16 @@ namespace ASC.Api.Documents /// Settings /// [Update(@"settings/templates")] - public bool DisplayTemplates(bool set) + public bool DisplayTemplatesFromBody([FromBody]DisplayModel model) { - return FileStorageService.DisplayTemplates(set); + return FileStorageService.DisplayTemplates(model.Set); + } + + [Update(@"settings/templates")] + [Consumes("application/x-www-form-urlencoded")] + public bool DisplayTemplatesFromForm([FromForm]DisplayModel model) + { + return FileStorageService.DisplayTemplates(model.Set); } /// @@ -1646,11 +2123,23 @@ namespace ASC.Api.Documents /// Community Server Address /// [Update("docservice")] - public IEnumerable CheckDocServiceUrl(string docServiceUrl, string docServiceUrlInternal, string docServiceUrlPortal) + public IEnumerable CheckDocServiceUrlFromBody([FromBody]CheckDocServiceUrlModel model) { - FilesLinkUtility.DocServiceUrl = docServiceUrl; - FilesLinkUtility.DocServiceUrlInternal = docServiceUrlInternal; - FilesLinkUtility.DocServicePortalUrl = docServiceUrlPortal; + return CheckDocServiceUrl(model); + } + + [Update("docservice")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable CheckDocServiceUrlFromForm([FromForm]CheckDocServiceUrlModel model) + { + return CheckDocServiceUrl(model); + } + + public IEnumerable CheckDocServiceUrl(CheckDocServiceUrlModel model) + { + FilesLinkUtility.DocServiceUrl = model.DocServiceUrl; + FilesLinkUtility.DocServiceUrlInternal = model.DocServiceUrlInternal; + FilesLinkUtility.DocServicePortalUrl = model.DocServiceUrlPortal; MessageService.Send(MessageAction.DocumentServiceLocationSetting); @@ -1741,9 +2230,21 @@ namespace ASC.Api.Documents /// false [Create("wordpress-save")] - public object WordpressSave(string code) + public object WordpressSaveFromBody([FromBody]WordpressSaveModel model) { - if (code == "") + return WordpressSave(model); + } + + [Create("wordpress-save")] + [Consumes("application/x-www-form-urlencoded")] + public object WordpressSaveFromForm([FromForm]WordpressSaveModel model) + { + return WordpressSave(model); + } + + private object WordpressSave(WordpressSaveModel model) + { + if (model.Code == "") { return new { @@ -1752,7 +2253,7 @@ namespace ASC.Api.Documents } try { - var token = WordpressToken.SaveTokenFromCode(code); + var token = WordpressToken.SaveTokenFromCode(model.Code); var meInfo = WordpressHelper.GetWordpressMeInfo(token.AccessToken); var blogId = JObject.Parse(meInfo).Value("token_site_id"); @@ -1780,7 +2281,19 @@ namespace ASC.Api.Documents /// false [Create("wordpress")] - public bool CreateWordpressPost(string code, string title, string content, int status) + public bool CreateWordpressPostFromBody([FromBody]CreateWordpressPostModel model) + { + return CreateWordpressPost(model); + } + + [Create("wordpress")] + [Consumes("application/x-www-form-urlencoded")] + public bool CreateWordpressPostFromForm([FromForm]CreateWordpressPostModel model) + { + return CreateWordpressPost(model); + } + + private bool CreateWordpressPost(CreateWordpressPostModel model) { try { @@ -1792,7 +2305,7 @@ namespace ASC.Api.Documents if (blogId != null) { - var createPost = WordpressHelper.CreateWordpressPost(title, content, status, blogId, token); + var createPost = WordpressHelper.CreateWordpressPost(model.Title, model.Content, model.Status, blogId, token); return createPost; } return false; @@ -1854,11 +2367,23 @@ namespace ASC.Api.Documents /// false [Create("easybib-citation")] - public object EasyBibCitationBook(string citationData) + public object EasyBibCitationBookFromBody([FromBody]EasyBibCitationBookModel model) + { + return EasyBibCitationBook(model); + } + + [Create("easybib-citation")] + [Consumes("application/x-www-form-urlencoded")] + public object EasyBibCitationBookFromForm([FromForm]EasyBibCitationBookModel model) + { + return EasyBibCitationBook(model); + } + + private object EasyBibCitationBook(EasyBibCitationBookModel model) { try { - var citat = EasyBibHelper.GetEasyBibCitation(citationData); + var citat = EasyBibHelper.GetEasyBibCitation(model.CitationData); if (citat != null) { return new diff --git a/products/ASC.Files/Server/Controllers/PrivacyRoomController.cs b/products/ASC.Files/Server/Controllers/PrivacyRoomController.cs index a812ffdfc2..8a93c526dc 100644 --- a/products/ASC.Files/Server/Controllers/PrivacyRoomController.cs +++ b/products/ASC.Files/Server/Controllers/PrivacyRoomController.cs @@ -86,7 +86,19 @@ namespace ASC.Api.Documents /// /// false [Update("keys")] - public object SetKeys(PrivacyRoomModel model) + public object SetKeysFromBody([FromBody]PrivacyRoomModel model) + { + return SetKeys(model); + } + + [Update("keys")] + [Consumes("application/x-www-form-urlencoded")] + public object SetKeysFromForm([FromForm]PrivacyRoomModel model) + { + return SetKeys(model); + } + + private object SetKeys(PrivacyRoomModel model) { PermissionContext.DemandPermissions(new UserSecurityProvider(AuthContext.CurrentAccount.ID), Constants.Action_EditUser); @@ -152,7 +164,19 @@ namespace ASC.Api.Documents /// /// false [Update("")] - public bool SetPrivacyRoom(PrivacyRoomModel model) + public bool SetPrivacyRoomFromBody([FromBody]PrivacyRoomModel model) + { + return SetPrivacyRoom(model); + } + + [Update("")] + [Consumes("application/x-www-form-urlencoded")] + public bool SetPrivacyRoomFromForm([FromForm]PrivacyRoomModel model) + { + return SetPrivacyRoom(model); + } + + private bool SetPrivacyRoom(PrivacyRoomModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); diff --git a/products/ASC.People/Server/Controllers/GroupController.cs b/products/ASC.People/Server/Controllers/GroupController.cs index e55e5f41fb..81a460047d 100644 --- a/products/ASC.People/Server/Controllers/GroupController.cs +++ b/products/ASC.People/Server/Controllers/GroupController.cs @@ -63,7 +63,19 @@ namespace ASC.Employee.Core.Controllers } [Create] - public GroupWrapperFull AddGroup(GroupModel groupModel) + public GroupWrapperFull AddGroupFromBody([FromBody]GroupModel groupModel) + { + return AddGroup(groupModel); + } + + [Create] + [Consumes("application/x-www-form-urlencoded")] + public GroupWrapperFull AddGroupFromForm([FromForm] GroupModel groupModel) + { + return AddGroup(groupModel); + } + + private GroupWrapperFull AddGroup(GroupModel groupModel) { PermissionContext.DemandPermissions(Constants.Action_EditGroups, Constants.Action_AddRemoveUser); @@ -84,7 +96,19 @@ namespace ASC.Employee.Core.Controllers } [Update("{groupid}")] - public GroupWrapperFull UpdateGroup(Guid groupid, GroupModel groupModel) + public GroupWrapperFull UpdateGroupFromBody(Guid groupid, [FromBody]GroupModel groupModel) + { + return UpdateGroup(groupid, groupModel); + } + + [Update("{groupid}")] + [Consumes("application/x-www-form-urlencoded")] + public GroupWrapperFull UpdateGroupFromForm(Guid groupid, [FromForm] GroupModel groupModel) + { + return UpdateGroup(groupid, groupModel); + } + + private GroupWrapperFull UpdateGroup(Guid groupid, GroupModel groupModel) { PermissionContext.DemandPermissions(Constants.Action_EditGroups, Constants.Action_AddRemoveUser); var group = UserManager.GetGroups().SingleOrDefault(x => x.ID == groupid).NotFoundIfNull("group not found"); @@ -96,7 +120,7 @@ namespace ASC.Employee.Core.Controllers group.Name = groupModel.GroupName ?? group.Name; UserManager.SaveGroupInfo(group); - RemoveMembersFrom(new GroupModel { Groupid = groupid, Members = UserManager.GetUsersByGroup(groupid, EmployeeStatus.All).Select(u => u.ID).Where(id => !groupModel.Members.Contains(id)) }); + RemoveMembersFrom(groupid, new GroupModel {Members = UserManager.GetUsersByGroup(groupid, EmployeeStatus.All).Select(u => u.ID).Where(id => !groupModel.Members.Contains(id)) }); TransferUserToDepartment(groupModel.GroupManager, @group, true); if (groupModel.Members != null) @@ -109,7 +133,7 @@ namespace ASC.Employee.Core.Controllers MessageService.Send(MessageAction.GroupUpdated, MessageTarget.Create(groupid), group.Name); - return GetById(groupModel.Groupid); + return GetById(groupid); } [Delete("{groupid}")] @@ -135,34 +159,58 @@ namespace ASC.Employee.Core.Controllers } [Update("{groupid}/members/{newgroupid}")] - public GroupWrapperFull TransferMembersTo(TransferGroupMembersModel transferGroupMembersModel) + public GroupWrapperFull TransferMembersTo(Guid groupid, Guid newgroupid) { PermissionContext.DemandPermissions(Constants.Action_EditGroups, Constants.Action_AddRemoveUser); - var oldgroup = GetGroupInfo(transferGroupMembersModel.GroupId); + var oldgroup = GetGroupInfo(groupid); - var newgroup = GetGroupInfo(transferGroupMembersModel.NewGroupId); + var newgroup = GetGroupInfo(newgroupid); var users = UserManager.GetUsersByGroup(oldgroup.ID); foreach (var userInfo in users) { TransferUserToDepartment(userInfo.ID, newgroup, false); } - return GetById(transferGroupMembersModel.NewGroupId); + return GetById(newgroupid); } [Create("{groupid}/members")] - public GroupWrapperFull SetMembersTo(GroupModel groupModel) + public GroupWrapperFull SetMembersToFromBody(Guid groupid, [FromBody]GroupModel groupModel) { - RemoveMembersFrom(new GroupModel { Groupid = groupModel.Groupid, Members = UserManager.GetUsersByGroup(groupModel.Groupid).Select(x => x.ID) }); - AddMembersTo(groupModel); - return GetById(groupModel.Groupid); + return SetMembersTo(groupid, groupModel); + } + + [Create("{groupid}/members")] + [Consumes("application/x-www-form-urlencoded")] + public GroupWrapperFull SetMembersToFromForm(Guid groupid, [FromForm] GroupModel groupModel) + { + return SetMembersTo(groupid, groupModel); + } + + private GroupWrapperFull SetMembersTo(Guid groupid, GroupModel groupModel) + { + RemoveMembersFrom(groupid, new GroupModel {Members = UserManager.GetUsersByGroup(groupid).Select(x => x.ID) }); + AddMembersTo(groupid, groupModel); + return GetById(groupid); } [Update("{groupid}/members")] - public GroupWrapperFull AddMembersTo(GroupModel groupModel) + public GroupWrapperFull AddMembersToFromBody(Guid groupid, [FromBody]GroupModel groupModel) + { + return AddMembersTo(groupid, groupModel); + } + + [Update("{groupid}/members")] + [Consumes("application/x-www-form-urlencoded")] + public GroupWrapperFull AddMembersToFromForm(Guid groupid, [FromForm] GroupModel groupModel) + { + return AddMembersTo(groupid, groupModel); + } + + private GroupWrapperFull AddMembersTo(Guid groupid, GroupModel groupModel) { PermissionContext.DemandPermissions(Constants.Action_EditGroups, Constants.Action_AddRemoveUser); - var group = GetGroupInfo(groupModel.Groupid); + var group = GetGroupInfo(groupid); foreach (var userId in groupModel.Members) { @@ -172,9 +220,21 @@ namespace ASC.Employee.Core.Controllers } [Update("{groupid}/manager")] - public GroupWrapperFull SetManager(SetManagerModel setManagerModel) + public GroupWrapperFull SetManagerFromBody(Guid groupid, [FromBody]SetManagerModel setManagerModel) { - var group = GetGroupInfo(setManagerModel.GroupId); + return SetManager(groupid, setManagerModel); + } + + [Update("{groupid}/manager")] + [Consumes("application/x-www-form-urlencoded")] + public GroupWrapperFull SetManagerFromForm(Guid groupid, [FromForm] SetManagerModel setManagerModel) + { + return SetManager(groupid, setManagerModel); + } + + private GroupWrapperFull SetManager(Guid groupid, SetManagerModel setManagerModel) + { + var group = GetGroupInfo(groupid); if (UserManager.UserExists(setManagerModel.UserId)) { UserManager.SetDepartmentManager(group.ID, setManagerModel.UserId); @@ -183,14 +243,26 @@ namespace ASC.Employee.Core.Controllers { throw new ItemNotFoundException("user not found"); } - return GetById(setManagerModel.GroupId); + return GetById(groupid); } [Delete("{groupid}/members")] - public GroupWrapperFull RemoveMembersFrom(GroupModel groupModel) + public GroupWrapperFull RemoveMembersFromFromBody(Guid groupid, [FromBody]GroupModel groupModel) + { + return RemoveMembersFrom(groupid, groupModel); + } + + [Delete("{groupid}/members")] + [Consumes("application/x-www-form-urlencoded")] + public GroupWrapperFull RemoveMembersFromFromForm(Guid groupid, [FromForm] GroupModel groupModel) + { + return RemoveMembersFrom(groupid, groupModel); + } + + private GroupWrapperFull RemoveMembersFrom(Guid groupid, GroupModel groupModel) { PermissionContext.DemandPermissions(Constants.Action_EditGroups, Constants.Action_AddRemoveUser); - var group = GetGroupInfo(groupModel.Groupid); + var group = GetGroupInfo(groupid); foreach (var userId in groupModel.Members) { diff --git a/products/ASC.People/Server/Controllers/PeopleController.cs b/products/ASC.People/Server/Controllers/PeopleController.cs index c16e33e192..d13b63e232 100644 --- a/products/ASC.People/Server/Controllers/PeopleController.cs +++ b/products/ASC.People/Server/Controllers/PeopleController.cs @@ -346,7 +346,6 @@ namespace ASC.Employee.Core.Controllers public IEnumerable GetSimpleByFilter(EmployeeStatus? employeeStatus, Guid? groupId, EmployeeActivationStatus? activationStatus, EmployeeType? employeeType, bool? isAdministrator) { var users = GetByFilter(employeeStatus, groupId, activationStatus, employeeType, isAdministrator); - return users.Select(EmployeeWraperHelper.Get); } @@ -399,7 +398,20 @@ namespace ASC.Employee.Core.Controllers [Create] [Authorize(AuthenticationSchemes = "confirm", Roles = "LinkInvite,Administrators")] - public EmployeeWraperFull AddMember(MemberModel memberModel) + public EmployeeWraperFull AddMemberFromBody([FromBody]MemberModel memberModel) + { + return AddMember(memberModel); + } + + [Create] + [Authorize(AuthenticationSchemes = "confirm", Roles = "LinkInvite,Administrators")] + [Consumes("application/x-www-form-urlencoded")] + public EmployeeWraperFull AddMemberFromForm([FromForm]MemberModel memberModel) + { + return AddMember(memberModel); + } + + private EmployeeWraperFull AddMember(MemberModel memberModel) { ApiContext.AuthByClaim(); @@ -458,7 +470,19 @@ namespace ASC.Employee.Core.Controllers } [Create("active")] - public EmployeeWraperFull AddMemberAsActivated(MemberModel memberModel) + public EmployeeWraperFull AddMemberAsActivatedFromBody([FromBody]MemberModel memberModel) + { + return AddMemberAsActivated(memberModel); + } + + [Create("active")] + [Consumes("application/x-www-form-urlencoded")] + public EmployeeWraperFull AddMemberAsActivatedFromForm([FromForm] MemberModel memberModel) + { + return AddMemberAsActivated(memberModel); + } + + private EmployeeWraperFull AddMemberAsActivated(MemberModel memberModel) { PermissionContext.DemandPermissions(Constants.Action_AddRemoveUser); @@ -514,7 +538,19 @@ namespace ASC.Employee.Core.Controllers } [Update("{userid}/culture")] - public EmployeeWraperFull UpdateMemberCulture(string userid, UpdateMemberModel memberModel) + public EmployeeWraperFull UpdateMemberCultureFromBody(string userid, [FromBody]UpdateMemberModel memberModel) + { + return UpdateMemberCulture(userid, memberModel); + } + + [Update("{userid}/culture")] + [Consumes("application/x-www-form-urlencoded")] + public EmployeeWraperFull UpdateMemberCultureFromForm(string userid, [FromForm] UpdateMemberModel memberModel) + { + return UpdateMemberCulture(userid, memberModel); + } + + private EmployeeWraperFull UpdateMemberCulture(string userid, UpdateMemberModel memberModel) { var user = GetUserInfo(userid); @@ -550,7 +586,19 @@ namespace ASC.Employee.Core.Controllers } [Update("{userid}")] - public EmployeeWraperFull UpdateMember(string userid, UpdateMemberModel memberModel) + public EmployeeWraperFull UpdateMemberFromBody(string userid, [FromBody]UpdateMemberModel memberModel) + { + return UpdateMember(userid, memberModel); + } + + [Update("{userid}")] + [Consumes("application/x-www-form-urlencoded")] + public EmployeeWraperFull UpdateMemberFromForm(string userid, [FromForm] UpdateMemberModel memberModel) + { + return UpdateMember(userid, memberModel); + } + + private EmployeeWraperFull UpdateMember(string userid, UpdateMemberModel memberModel) { var user = GetUserInfo(userid); @@ -729,7 +777,19 @@ namespace ASC.Employee.Core.Controllers } [Update("{userid}/contacts")] - public EmployeeWraperFull UpdateMemberContacts(string userid, UpdateMemberModel memberModel) + public EmployeeWraperFull UpdateMemberContactsFromBody(string userid, [FromBody]UpdateMemberModel memberModel) + { + return UpdateMemberContacts(userid, memberModel); + } + + [Update("{userid}/contacts")] + [Consumes("application/x-www-form-urlencoded")] + public EmployeeWraperFull UpdateMemberContactsFromForm(string userid, [FromForm] UpdateMemberModel memberModel) + { + return UpdateMemberContacts(userid, memberModel); + } + + private EmployeeWraperFull UpdateMemberContacts(string userid, UpdateMemberModel memberModel) { var user = GetUserInfo(userid); @@ -742,7 +802,19 @@ namespace ASC.Employee.Core.Controllers } [Create("{userid}/contacts")] - public EmployeeWraperFull SetMemberContacts(string userid, UpdateMemberModel memberModel) + public EmployeeWraperFull SetMemberContactsFromBody(string userid, [FromBody]UpdateMemberModel memberModel) + { + return SetMemberContacts(userid, memberModel); + } + + [Create("{userid}/contacts")] + [Consumes("application/x-www-form-urlencoded")] + public EmployeeWraperFull SetMemberContactsFromForm(string userid, [FromForm] UpdateMemberModel memberModel) + { + return SetMemberContacts(userid, memberModel); + } + + private EmployeeWraperFull SetMemberContacts(string userid,UpdateMemberModel memberModel) { var user = GetUserInfo(userid); @@ -755,7 +827,19 @@ namespace ASC.Employee.Core.Controllers } [Delete("{userid}/contacts")] - public EmployeeWraperFull DeleteMemberContacts(string userid, UpdateMemberModel memberModel) + public EmployeeWraperFull DeleteMemberContactsFromBody(string userid, [FromBody]UpdateMemberModel memberModel) + { + return DeleteMemberContacts(userid, memberModel); + } + + [Delete("{userid}/contacts")] + [Consumes("application/x-www-form-urlencoded")] + public EmployeeWraperFull DeleteMemberContactsFromForm(string userid, [FromForm]UpdateMemberModel memberModel) + { + return DeleteMemberContacts(userid, memberModel); + } + + private EmployeeWraperFull DeleteMemberContacts(string userid, UpdateMemberModel memberModel) { var user = GetUserInfo(userid); @@ -780,7 +864,19 @@ namespace ASC.Employee.Core.Controllers [Create("{userid}/photo")] - public FileUploadResult UploadMemberPhoto(string userid, IFormCollection model) + public FileUploadResult UploadMemberPhotoFromBody(string userid, [FromBody]IFormCollection model) + { + return UploadMemberPhoto(userid, model); + } + + [Create("{userid}/photo")] + [Consumes("application/x-www-form-urlencoded")] + public FileUploadResult UploadMemberPhotoFromForm(string userid, [FromForm] IFormCollection model) + { + return UploadMemberPhoto(userid, model); + } + + private FileUploadResult UploadMemberPhoto(string userid, IFormCollection model) { var result = new People.Models.FileUploadResult(); var autosave = bool.Parse(model["Autosave"]); @@ -876,7 +972,19 @@ namespace ASC.Employee.Core.Controllers } [Update("{userid}/photo")] - public ThumbnailsDataWrapper UpdateMemberPhoto(string userid, UpdateMemberModel model) + public ThumbnailsDataWrapper UpdateMemberPhotoFromBody(string userid, [FromBody]UpdateMemberModel model) + { + return UpdateMemberPhoto(userid, model); + } + + [Update("{userid}/photo")] + [Consumes("application/x-www-form-urlencoded")] + public ThumbnailsDataWrapper UpdateMemberPhotoFromForm(string userid, [FromForm] UpdateMemberModel model) + { + return UpdateMemberPhoto(userid, model); + } + + private ThumbnailsDataWrapper UpdateMemberPhoto(string userid, UpdateMemberModel model) { var user = GetUserInfo(userid); @@ -914,7 +1022,19 @@ namespace ASC.Employee.Core.Controllers [Create("{userid}/photo/thumbnails")] - public ThumbnailsDataWrapper CreateMemberPhotoThumbnails(string userid, ThumbnailsModel thumbnailsModel) + public ThumbnailsDataWrapper CreateMemberPhotoThumbnailsFromBody(string userid, [FromBody]ThumbnailsModel thumbnailsModel) + { + return CreateMemberPhotoThumbnails(userid, thumbnailsModel); + } + + [Create("{userid}/photo/thumbnails")] + [Consumes("application/x-www-form-urlencoded")] + public ThumbnailsDataWrapper CreateMemberPhotoThumbnailsFromForm(string userid, [FromForm] ThumbnailsModel thumbnailsModel) + { + return CreateMemberPhotoThumbnails(userid, thumbnailsModel); + } + + private ThumbnailsDataWrapper CreateMemberPhotoThumbnails(string userid, ThumbnailsModel thumbnailsModel) { var user = GetUserInfo(userid); @@ -949,7 +1069,20 @@ namespace ASC.Employee.Core.Controllers [AllowAnonymous] [Create("password", false)] - public object SendUserPassword(MemberModel memberModel) + public object SendUserPasswordFromBody([FromBody]MemberModel memberModel) + { + return SendUserPassword(memberModel); + } + + [AllowAnonymous] + [Create("password", false)] + [Consumes("application/x-www-form-urlencoded")] + public object SendUserPasswordFromForm([FromForm] MemberModel memberModel) + { + return SendUserPassword(memberModel); + } + + private object SendUserPassword(MemberModel memberModel) { string error; if (!string.IsNullOrEmpty(error = UserManagerWrapper.SendUserPassword(memberModel.Email))) @@ -962,7 +1095,20 @@ namespace ASC.Employee.Core.Controllers [Update("{userid}/password")] [Authorize(AuthenticationSchemes = "confirm", Roles = "PasswordChange,EmailChange,Activation,Administrators")] - public EmployeeWraperFull ChangeUserPassword(Guid userid, MemberModel memberModel) + public EmployeeWraperFull ChangeUserPasswordFromBody(Guid userid, [FromBody]MemberModel memberModel) + { + return ChangeUserPassword(userid, memberModel); + } + + [Update("{userid}/password")] + [Authorize(AuthenticationSchemes = "confirm", Roles = "PasswordChange,EmailChange,Activation,Administrators")] + [Consumes("application/x-www-form-urlencoded")] + public EmployeeWraperFull ChangeUserPasswordFromForm(Guid userid, [FromForm] MemberModel memberModel) + { + return ChangeUserPassword(userid, memberModel); + } + + private EmployeeWraperFull ChangeUserPassword(Guid userid, MemberModel memberModel) { ApiContext.AuthByClaim(); PermissionContext.DemandPermissions(new UserSecurityProvider(userid), Constants.Action_EditUser); @@ -1010,7 +1156,19 @@ namespace ASC.Employee.Core.Controllers [Create("email", false)] - public object SendEmailChangeInstructions(UpdateMemberModel model) + public object SendEmailChangeInstructionsFromBody([FromBody]UpdateMemberModel model) + { + return SendEmailChangeInstructions(model); + } + + [Create("email", false)] + [Consumes("application/x-www-form-urlencoded")] + public object SendEmailChangeInstructionsFromForm([FromForm] UpdateMemberModel model) + { + return SendEmailChangeInstructions(model); + } + + private object SendEmailChangeInstructions(UpdateMemberModel model) { Guid.TryParse(model.UserId, out var userid); @@ -1075,7 +1233,20 @@ namespace ASC.Employee.Core.Controllers [Update("activationstatus/{activationstatus}")] [Authorize(AuthenticationSchemes = "confirm", Roles = "Activation,Administrators")] - public IEnumerable UpdateEmployeeActivationStatus(EmployeeActivationStatus activationstatus, UpdateMembersModel model) + public IEnumerable UpdateEmployeeActivationStatusFromBody(EmployeeActivationStatus activationstatus, [FromBody]UpdateMembersModel model) + { + return UpdateEmployeeActivationStatus(activationstatus, model); + } + + [Update("activationstatus/{activationstatus}")] + [Authorize(AuthenticationSchemes = "confirm", Roles = "Activation,Administrators")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable UpdateEmployeeActivationStatusFromForm(EmployeeActivationStatus activationstatus, [FromForm] UpdateMembersModel model) + { + return UpdateEmployeeActivationStatus(activationstatus, model); + } + + private IEnumerable UpdateEmployeeActivationStatus(EmployeeActivationStatus activationstatus, UpdateMembersModel model) { ApiContext.AuthByClaim(); @@ -1094,9 +1265,20 @@ namespace ASC.Employee.Core.Controllers return retuls; } + [Update("type/{type}")] + public IEnumerable UpdateUserTypeFromBody(EmployeeType type, [FromBody]UpdateMembersModel model) + { + return UpdateUserType(type, model); + } [Update("type/{type}")] - public IEnumerable UpdateUserType(EmployeeType type, UpdateMembersModel model) + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable UpdateUserTypeFromForm(EmployeeType type, [FromForm] UpdateMembersModel model) + { + return UpdateUserType(type, model); + } + + private IEnumerable UpdateUserType(EmployeeType type, UpdateMembersModel model) { var users = model.UserIds .Where(userId => !UserManager.IsSystemUser(userId)) @@ -1133,7 +1315,19 @@ namespace ASC.Employee.Core.Controllers } [Update("status/{status}")] - public IEnumerable UpdateUserStatus(EmployeeStatus status, UpdateMembersModel model) + public IEnumerable UpdateUserStatusFromBody(EmployeeStatus status, [FromBody]UpdateMembersModel model) + { + return UpdateUserStatus(status, model); + } + + [Update("status/{status}")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable UpdateUserStatusFromForm(EmployeeStatus status, [FromForm] UpdateMembersModel model) + { + return UpdateUserStatus(status, model); + } + + private IEnumerable UpdateUserStatus(EmployeeStatus status, UpdateMembersModel model) { PermissionContext.DemandPermissions(Constants.Action_EditUser); @@ -1175,7 +1369,19 @@ namespace ASC.Employee.Core.Controllers [Update("invite")] - public IEnumerable ResendUserInvites(UpdateMembersModel model) + public IEnumerable ResendUserInvitesFromBody([FromBody]UpdateMembersModel model) + { + return ResendUserInvites(model); + } + + [Update("invite")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable ResendUserInvitesFromForm([FromForm] UpdateMembersModel model) + { + return ResendUserInvites(model); + } + + private IEnumerable ResendUserInvites(UpdateMembersModel model) { var users = model.UserIds .Where(userId => !UserManager.IsSystemUser(userId)) @@ -1209,7 +1415,19 @@ namespace ASC.Employee.Core.Controllers } [Update("delete", Order = -1)] - public IEnumerable RemoveUsers(UpdateMembersModel model) + public IEnumerable RemoveUsersFromBody([FromBody]UpdateMembersModel model) + { + return RemoveUsers(model); + } + + [Update("delete", Order = -1)] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable RemoveUsersFromForm([FromForm] UpdateMembersModel model) + { + return RemoveUsers(model); + } + + private IEnumerable RemoveUsers(UpdateMembersModel model) { PermissionContext.DemandPermissions(Constants.Action_AddRemoveUser); @@ -1252,9 +1470,21 @@ namespace ASC.Employee.Core.Controllers [Update("thirdparty/linkaccount")] - public void LinkAccount(string serializedProfile) + public void LinkAccountFromBody([FromBody]LinkAccountModel model) { - var profile = new LoginProfile(Signature, InstanceCrypto, serializedProfile); + LinkAccount(model); + } + + [Update("thirdparty/linkaccount")] + [Consumes("application/x-www-form-urlencoded")] + public void LinkAccountFromForm([FromForm]LinkAccountModel model) + { + LinkAccount(model); + } + + public void LinkAccount(LinkAccountModel model) + { + var profile = new LoginProfile(Signature, InstanceCrypto, model.SerializedProfile); if (string.IsNullOrEmpty(profile.AuthorizationError)) { @@ -1311,35 +1541,56 @@ namespace ASC.Employee.Core.Controllers } [Update(@"reassign/terminate")] - public void TerminateReassign(Guid userId) + public void TerminateReassignFromBody([FromBody]TerminateModel model) { PermissionContext.DemandPermissions(Constants.Action_EditUser); - QueueWorkerReassign.Terminate(Tenant.TenantId, userId); + QueueWorkerReassign.Terminate(Tenant.TenantId, model.UserId); + } + + [Update(@"reassign/terminate")] + [Consumes("application/x-www-form-urlencoded")] + public void TerminateReassignFromForm([FromForm]TerminateModel model) + { + PermissionContext.DemandPermissions(Constants.Action_EditUser); + + QueueWorkerReassign.Terminate(Tenant.TenantId, model.UserId); } [Create(@"reassign/start")] - public ReassignProgressItem StartReassign(Guid fromUserId, Guid toUserId, bool deleteProfile) + public ReassignProgressItem StartReassignFromBody([FromBody]StartReassignModel model) + { + return StartReassign(model); + } + + [Create(@"reassign/start")] + [Consumes("application/x-www-form-urlencoded")] + public ReassignProgressItem StartReassignFromForm([FromForm]StartReassignModel model) + { + return StartReassign(model); + } + + private ReassignProgressItem StartReassign(StartReassignModel model) { PermissionContext.DemandPermissions(Constants.Action_EditUser); - var fromUser = UserManager.GetUsers(fromUserId); + var fromUser = UserManager.GetUsers(model.FromUserId); if (fromUser == null || fromUser.ID == Constants.LostUser.ID) - throw new ArgumentException("User with id = " + fromUserId + " not found"); + throw new ArgumentException("User with id = " + model.FromUserId + " not found"); if (fromUser.IsOwner(Tenant) || fromUser.IsMe(AuthContext) || fromUser.Status != EmployeeStatus.Terminated) - throw new ArgumentException("Can not delete user with id = " + fromUserId); + throw new ArgumentException("Can not delete user with id = " + model.FromUserId); - var toUser = UserManager.GetUsers(toUserId); + var toUser = UserManager.GetUsers(model.ToUserId); if (toUser == null || toUser.ID == Constants.LostUser.ID) - throw new ArgumentException("User with id = " + toUserId + " not found"); + throw new ArgumentException("User with id = " + model.ToUserId + " not found"); if (toUser.IsVisitor(UserManager) || toUser.Status == EmployeeStatus.Terminated) - throw new ArgumentException("Can not reassign data to user with id = " + toUserId); + throw new ArgumentException("Can not reassign data to user with id = " + model.ToUserId); - return QueueWorkerReassign.Start(Tenant.TenantId, fromUserId, toUserId, SecurityContext.CurrentAccount.ID, deleteProfile); + return QueueWorkerReassign.Start(Tenant.TenantId, model.FromUserId, model.ToUserId, SecurityContext.CurrentAccount.ID, model.DeleteProfile); } private void CheckReassignProccess(IEnumerable userIds) @@ -1357,7 +1608,6 @@ namespace ASC.Employee.Core.Controllers //#endregion - #region Remove user data @@ -1370,25 +1620,46 @@ namespace ASC.Employee.Core.Controllers } [Update(@"remove/terminate")] - public void TerminateRemove(Guid userId) + public void TerminateRemoveFromBody([FromBody]TerminateModel model) { PermissionContext.DemandPermissions(Constants.Action_EditUser); - QueueWorkerRemove.Terminate(Tenant.TenantId, userId); + QueueWorkerRemove.Terminate(Tenant.TenantId, model.UserId); + } + + [Update(@"remove/terminate")] + [Consumes("application/x-www-form-urlencoded")] + public void TerminateRemoveFromForm([FromForm]TerminateModel model) + { + PermissionContext.DemandPermissions(Constants.Action_EditUser); + + QueueWorkerRemove.Terminate(Tenant.TenantId, model.UserId); } [Create(@"remove/start")] - public RemoveProgressItem StartRemove(Guid userId) + public RemoveProgressItem StartRemoveFromBody([FromBody]TerminateModel model) + { + return StartRemove(model); + } + + [Create(@"remove/start")] + [Consumes("application/x-www-form-urlencoded")] + public RemoveProgressItem StartRemoveFromForm([FromForm]TerminateModel model) + { + return StartRemove(model); + } + + private RemoveProgressItem StartRemove(TerminateModel model) { PermissionContext.DemandPermissions(Constants.Action_EditUser); - var user = UserManager.GetUsers(userId); + var user = UserManager.GetUsers(model.UserId); if (user == null || user.ID == Constants.LostUser.ID) - throw new ArgumentException("User with id = " + userId + " not found"); + throw new ArgumentException("User with id = " + model.UserId + " not found"); if (user.IsOwner(Tenant) || user.IsMe(AuthContext) || user.Status != EmployeeStatus.Terminated) - throw new ArgumentException("Can not delete user with id = " + userId); + throw new ArgumentException("Can not delete user with id = " + model.UserId); return QueueWorkerRemove.Start(Tenant.TenantId, user, SecurityContext.CurrentAccount.ID, true); } diff --git a/products/ASC.People/Server/Models/GroupModel.cs b/products/ASC.People/Server/Models/GroupModel.cs index 555a289f5e..5695882e03 100644 --- a/products/ASC.People/Server/Models/GroupModel.cs +++ b/products/ASC.People/Server/Models/GroupModel.cs @@ -5,7 +5,6 @@ namespace ASC.People.Models { public class GroupModel { - public Guid Groupid { get; set; } public Guid GroupManager { get; set; } public string GroupName { get; set; } public IEnumerable Members { get; set; } diff --git a/products/ASC.People/Server/Models/LinkAccountModel.cs b/products/ASC.People/Server/Models/LinkAccountModel.cs new file mode 100644 index 0000000000..c195401f81 --- /dev/null +++ b/products/ASC.People/Server/Models/LinkAccountModel.cs @@ -0,0 +1,7 @@ +namespace ASC.People.Models +{ + public class LinkAccountModel + { + public string SerializedProfile{get;set;} + } +} diff --git a/products/ASC.People/Server/Models/SetManagerModel.cs b/products/ASC.People/Server/Models/SetManagerModel.cs index b4ec5af64c..1c7c8a04a2 100644 --- a/products/ASC.People/Server/Models/SetManagerModel.cs +++ b/products/ASC.People/Server/Models/SetManagerModel.cs @@ -4,7 +4,6 @@ namespace ASC.People.Models { public class SetManagerModel { - public Guid GroupId { get; set; } public Guid UserId { get; set; } } } diff --git a/products/ASC.People/Server/Models/StartReassignModel.cs b/products/ASC.People/Server/Models/StartReassignModel.cs new file mode 100644 index 0000000000..da38a0a125 --- /dev/null +++ b/products/ASC.People/Server/Models/StartReassignModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace ASC.People.Models +{ + public class StartReassignModel + { + public Guid FromUserId { get; set; } + public Guid ToUserId { get; set; } + public bool DeleteProfile { get; set; } + } +} diff --git a/products/ASC.People/Server/Models/TerminateModel.cs b/products/ASC.People/Server/Models/TerminateModel.cs new file mode 100644 index 0000000000..c31f618ff0 --- /dev/null +++ b/products/ASC.People/Server/Models/TerminateModel.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace ASC.People.Models +{ + public class TerminateModel + { + public Guid UserId { get; set; } + } +} diff --git a/web/ASC.Web.Api/Controllers/AuthenticationController.cs b/web/ASC.Web.Api/Controllers/AuthenticationController.cs index 6e11e13519..8659ceceb0 100644 --- a/web/ASC.Web.Api/Controllers/AuthenticationController.cs +++ b/web/ASC.Web.Api/Controllers/AuthenticationController.cs @@ -60,7 +60,7 @@ namespace ASC.Web.Api.Controllers return AuthenticateMe(auth); } - public AuthenticationTokenData AuthenticateMe(AuthModel auth) + private AuthenticationTokenData AuthenticateMe(AuthModel auth) { var tenant = TenantManager.GetCurrentTenant(); var user = GetUser(tenant.TenantId, auth); @@ -92,7 +92,15 @@ namespace ASC.Web.Api.Controllers [AllowAnonymous] [Create("confirm", false)] - public ValidationResult CheckConfirm([FromBody] EmailValidationKeyModel model) + public ValidationResult CheckConfirmFromBody([FromBody] EmailValidationKeyModel model) + { + return EmailValidationKeyModelHelper.Validate(model); + } + + [AllowAnonymous] + [Create("confirm", false)] + [Consumes("application/x-www-form-urlencoded")] + public ValidationResult CheckConfirmFromForm([FromForm] EmailValidationKeyModel model) { return EmailValidationKeyModelHelper.Validate(model); } diff --git a/web/ASC.Web.Api/Controllers/PortalController.cs b/web/ASC.Web.Api/Controllers/PortalController.cs index f3e006428c..28a2d445cf 100644 --- a/web/ASC.Web.Api/Controllers/PortalController.cs +++ b/web/ASC.Web.Api/Controllers/PortalController.cs @@ -21,7 +21,6 @@ using ASC.Web.Core.Utility; using ASC.Web.Studio.Core; using ASC.Web.Studio.Core.Notify; using ASC.Web.Studio.UserControls.Management; -using ASC.Web.Studio.UserControls.Statistics; using ASC.Web.Studio.Utility; using Microsoft.AspNetCore.Mvc; @@ -222,11 +221,19 @@ namespace ASC.Web.Api.Controllers } [Create("mobile/registration")] - public void RegisterMobileAppInstall(MobileAppModel model) + public void RegisterMobileAppInstallFromBody([FromBody]MobileAppModel model) { var currentUser = UserManager.GetUsers(SecurityContext.CurrentAccount.ID); MobileAppInstallRegistrator.RegisterInstall(currentUser.Email, model.Type); - } + } + + [Create("mobile/registration")] + [Consumes("application/x-www-form-urlencoded")] + public void RegisterMobileAppInstallFromForm([FromForm]MobileAppModel model) + { + var currentUser = UserManager.GetUsers(SecurityContext.CurrentAccount.ID); + MobileAppInstallRegistrator.RegisterInstall(currentUser.Email, model.Type); + } } public static class PortalControllerExtension diff --git a/web/ASC.Web.Api/Controllers/SecurityController.cs b/web/ASC.Web.Api/Controllers/SecurityController.cs index 31af628ae4..d2df292faf 100644 --- a/web/ASC.Web.Api/Controllers/SecurityController.cs +++ b/web/ASC.Web.Api/Controllers/SecurityController.cs @@ -134,7 +134,19 @@ namespace ASC.Web.Api.Controllers } [Create("audit/settings/lifetime")] - public TenantAuditSettings SetAuditSettings(TenantAuditSettingsWrapper wrapper) + public TenantAuditSettings SetAuditSettingsFromBody([FromBody] TenantAuditSettingsWrapper wrapper) + { + return SetAuditSettings(wrapper); + } + + [Create("audit/settings/lifetime")] + [Consumes("application/x-www-form-urlencoded")] + public TenantAuditSettings SetAuditSettingsFromForm([FromForm] TenantAuditSettingsWrapper wrapper) + { + return SetAuditSettings(wrapper); + } + + private TenantAuditSettings SetAuditSettings(TenantAuditSettingsWrapper wrapper) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); diff --git a/web/ASC.Web.Api/Controllers/SettingsController.cs b/web/ASC.Web.Api/Controllers/SettingsController.cs index c14b59ce03..1c208670fa 100644 --- a/web/ASC.Web.Api/Controllers/SettingsController.cs +++ b/web/ASC.Web.Api/Controllers/SettingsController.cs @@ -341,7 +341,19 @@ namespace ASC.Api.Settings } [Create("messagesettings")] - public object EnableAdminMessageSettings(AdminMessageSettingsModel model) + public object EnableAdminMessageSettingsFromBody([FromBody]AdminMessageSettingsModel model) + { + return EnableAdminMessageSettings(model); + } + + [Create("messagesettings")] + [Consumes("application/x-www-form-urlencoded")] + public object EnableAdminMessageSettingsFromForm([FromForm] AdminMessageSettingsModel model) + { + return EnableAdminMessageSettings(model); + } + + private object EnableAdminMessageSettings(AdminMessageSettingsModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -354,7 +366,20 @@ namespace ASC.Api.Settings [AllowAnonymous] [Create("sendadmmail")] - public object SendAdmMail(AdminMessageSettingsModel model) + public object SendAdmMailFromBody([FromBody]AdminMessageSettingsModel model) + { + return SendAdmMail(model); + } + + [AllowAnonymous] + [Create("sendadmmail")] + [Consumes("application/x-www-form-urlencoded")] + public object SendAdmMailFromForm([FromForm] AdminMessageSettingsModel model) + { + return SendAdmMail(model); + } + + private object SendAdmMail(AdminMessageSettingsModel model) { var studioAdminMessageSettings = SettingsManager.Load(); var enableAdmMess = studioAdminMessageSettings.Enable || TenantExtra.IsNotPaid(); @@ -377,7 +402,19 @@ namespace ASC.Api.Settings } [Create("maildomainsettings")] - public object SaveMailDomainSettings(MailDomainSettingsModel model) + public object SaveMailDomainSettingsFromBody([FromBody] MailDomainSettingsModel model) + { + return SaveMailDomainSettings(model); + } + + [Create("maildomainsettings")] + [Consumes("application/x-www-form-urlencoded")] + public object SaveMailDomainSettingsFromForm([FromForm] MailDomainSettingsModel model) + { + return SaveMailDomainSettings(model); + } + + private object SaveMailDomainSettings(MailDomainSettingsModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -409,7 +446,20 @@ namespace ASC.Api.Settings [AllowAnonymous] [Create("sendjoininvite")] - public object SendJoinInviteMail(AdminMessageSettingsModel model) + public object SendJoinInviteMailFromBody([FromBody]AdminMessageSettingsModel model) + { + return SendJoinInviteMail(model); + } + + [AllowAnonymous] + [Create("sendjoininvite")] + [Consumes("application/x-www-form-urlencoded")] + public object SendJoinInviteMailFromForm([FromForm] AdminMessageSettingsModel model) + { + return SendJoinInviteMail(model); + } + + private object SendJoinInviteMail(AdminMessageSettingsModel model) { try { @@ -625,7 +675,19 @@ namespace ASC.Api.Settings } [Create("greetingsettings")] - public ContentResult SaveGreetingSettings(GreetingSettingsModel model) + public ContentResult SaveGreetingSettingsFromBody([FromBody]GreetingSettingsModel model) + { + return SaveGreetingSettings(model); + } + + [Create("greetingsettings")] + [Consumes("application/x-www-form-urlencoded")] + public ContentResult SaveGreetingSettingsFromForm([FromForm]GreetingSettingsModel model) + { + return SaveGreetingSettings(model); + } + + private ContentResult SaveGreetingSettings(GreetingSettingsModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -698,7 +760,19 @@ namespace ASC.Api.Settings } [Update("version")] - public TenantVersionWrapper SetVersion(SettingsModel model) + public TenantVersionWrapper SetVersionFromBody([FromBody]SettingsModel model) + { + return SetVersion(model); + } + + [Update("version")] + [Consumes("application/x-www-form-urlencoded")] + public TenantVersionWrapper SetVersionFromForm([FromForm] SettingsModel model) + { + return SetVersion(model); + } + + private TenantVersionWrapper SetVersion(SettingsModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -762,7 +836,19 @@ namespace ASC.Api.Settings } [Update("security")] - public IEnumerable SetWebItemSecurity(WebItemSecurityModel model) + public IEnumerable SetWebItemSecurityFromBody([FromBody]WebItemSecurityModel model) + { + return SetWebItemSecurity(model); + } + + [Update("security")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable SetWebItemSecurityFromForm([FromForm] WebItemSecurityModel model) + { + return SetWebItemSecurity(model); + } + + private IEnumerable SetWebItemSecurity(WebItemSecurityModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -796,7 +882,19 @@ namespace ASC.Api.Settings } [Update("security/access")] - public IEnumerable SetAccessToWebItems(WebItemSecurityModel model) + public IEnumerable SetAccessToWebItemsFromBody([FromBody]WebItemSecurityModel model) + { + return SetAccessToWebItems(model); + } + + [Update("security/access")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable SetAccessToWebItemsFromForm([FromForm] WebItemSecurityModel model) + { + return SetAccessToWebItems(model); + } + + private IEnumerable SetAccessToWebItems(WebItemSecurityModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -854,11 +952,23 @@ namespace ASC.Api.Settings public object IsProductAdministrator(Guid productid, Guid userid) { var result = WebItemSecurity.IsProductAdministrator(productid, userid); - return new { ProductId = productid, UserId = userid, Administrator = result, }; + return new { ProductId = productid, UserId = userid, Administrator = result }; } [Update("security/administrator")] - public object SetProductAdministrator(SecurityModel model) + public object SetProductAdministratorFromBody([FromBody]SecurityModel model) + { + return SetProductAdministrator(model); + } + + [Update("security/administrator")] + [Consumes("application/x-www-form-urlencoded")] + public object SetProductAdministratorFromForm([FromForm] SecurityModel model) + { + return SetProductAdministrator(model); + } + + private object SetProductAdministrator(SecurityModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -886,10 +996,21 @@ namespace ASC.Api.Settings return TenantInfoSettingsHelper.GetAbsoluteCompanyLogoPath(SettingsManager.Load()); } - ///false [Create("whitelabel/save")] - public bool SaveWhiteLabelSettings([FromBody] WhiteLabelModel model, [FromQuery] WhiteLabelQuery query) + public bool SaveWhiteLabelSettingsFromBody([FromBody] WhiteLabelModel model, [FromQuery] WhiteLabelQuery query) + { + return SaveWhiteLabelSettings(model, query); + } + + [Create("whitelabel/save")] + [Consumes("application/x-www-form-urlencoded")] + public bool SaveWhiteLabelSettingsFromForm([FromForm] WhiteLabelModel model, [FromQuery] WhiteLabelQuery query) + { + return SaveWhiteLabelSettings(model, query); + } + + private bool SaveWhiteLabelSettings(WhiteLabelModel model, WhiteLabelQuery query) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -940,7 +1061,6 @@ namespace ASC.Api.Settings } - ///false [Create("whitelabel/savefromfiles")] public bool SaveWhiteLabelSettingsFromFiles([FromQuery] WhiteLabelQuery query) @@ -1138,14 +1258,38 @@ namespace ASC.Api.Settings } [Update("iprestrictions")] - public IEnumerable SaveIpRestrictions(IpRestrictionsModel model) + public IEnumerable SaveIpRestrictionsFromBody([FromBody]IpRestrictionsModel model) + { + return SaveIpRestrictions(model); + } + + [Update("iprestrictions")] + [Consumes("application/x-www-form-urlencoded")] + public IEnumerable SaveIpRestrictionsFromForm([FromForm] IpRestrictionsModel model) + { + return SaveIpRestrictions(model); + } + + private IEnumerable SaveIpRestrictions(IpRestrictionsModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); return IPRestrictionsService.Save(model.Ips, Tenant.TenantId); } [Update("iprestrictions/settings")] - public IPRestrictionsSettings UpdateIpRestrictionsSettings(IpRestrictionsModel model) + public IPRestrictionsSettings UpdateIpRestrictionsSettingsFromBody([FromBody]IpRestrictionsModel model) + { + return UpdateIpRestrictionsSettings(model); + } + + [Update("iprestrictions/settings")] + [Consumes("application/x-www-form-urlencoded")] + public IPRestrictionsSettings UpdateIpRestrictionsSettingsFromForm([FromForm] IpRestrictionsModel model) + { + return UpdateIpRestrictionsSettings(model); + } + + private IPRestrictionsSettings UpdateIpRestrictionsSettings(IpRestrictionsModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -1156,7 +1300,19 @@ namespace ASC.Api.Settings } [Update("tips")] - public TipsSettings UpdateTipsSettings(SettingsModel model) + public TipsSettings UpdateTipsSettingsFromBody([FromBody]SettingsModel model) + { + return UpdateTipsSettings(model); + } + + [Update("tips")] + [Consumes("application/x-www-form-urlencoded")] + public TipsSettings UpdateTipsSettingsFromForm([FromForm] SettingsModel model) + { + return UpdateTipsSettings(model); + } + + private TipsSettings UpdateTipsSettings(SettingsModel model) { var settings = new TipsSettings { Show = model.Show }; SettingsManager.SaveForCurrentUser(settings); @@ -1191,7 +1347,20 @@ namespace ASC.Api.Settings [Update("wizard/complete", Check = false)] [Authorize(AuthenticationSchemes = "confirm", Roles = "Wizard")] - public WizardSettings CompleteWizard(WizardModel wizardModel) + public WizardSettings CompleteWizardFromBody([FromBody]WizardModel wizardModel) + { + return CompleteWizard(wizardModel); + } + + [Update("wizard/complete", Check = false)] + [Authorize(AuthenticationSchemes = "confirm", Roles = "Wizard")] + [Consumes("application/x-www-form-urlencoded")] + public WizardSettings CompleteWizardFromForm([FromForm] WizardModel wizardModel) + { + return CompleteWizard(wizardModel); + } + + private WizardSettings CompleteWizard(WizardModel wizardModel) { ApiContext.AuthByClaim(); @@ -1202,7 +1371,19 @@ namespace ASC.Api.Settings [Update("tfaapp")] - public bool TfaSettings(TfaModel model) + public bool TfaSettingsFromBody([FromBody]TfaModel model) + { + return TfaSettings(model); + } + + [Update("tfaapp")] + [Consumes("application/x-www-form-urlencoded")] + public bool TfaSettingsFromForm([FromForm] TfaModel model) + { + return TfaSettings(model); + } + + private bool TfaSettings(TfaModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -1311,7 +1492,19 @@ namespace ASC.Api.Settings } [Update("tfaappnewapp")] - public object TfaAppNewApp(TfaModel model) + public object TfaAppNewAppFromBody([FromBody]TfaModel model) + { + return TfaAppNewApp(model); + } + + [Update("tfaappnewapp")] + [Consumes("application/x-www-form-urlencoded")] + public object TfaAppNewAppFromForm([FromForm] TfaModel model) + { + return TfaAppNewApp(model); + } + + private object TfaAppNewApp(TfaModel model) { var isMe = model.Id.Equals(Guid.Empty); var user = UserManager.GetUsers(isMe ? AuthContext.CurrentAccount.ID : model.Id); @@ -1355,7 +1548,19 @@ namespace ASC.Api.Settings ///false [Update("colortheme")] - public void SaveColorTheme(SettingsModel model) + public void SaveColorThemeFromBody([FromBody]SettingsModel model) + { + SaveColorTheme(model); + } + + [Update("colortheme")] + [Consumes("application/x-www-form-urlencoded")] + public void SaveColorThemeFromForm([FromForm] SettingsModel model) + { + SaveColorTheme(model); + } + + private void SaveColorTheme(SettingsModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); ColorThemesSettingsHelper.SaveColorTheme(model.Theme); @@ -1364,7 +1569,19 @@ namespace ASC.Api.Settings ///false [Update("timeandlanguage")] - public object TimaAndLanguage(SettingsModel model) + public object TimaAndLanguageFromBody([FromBody]SettingsModel model) + { + return TimaAndLanguage(model); + } + + [Update("timeandlanguage")] + [Consumes("application/x-www-form-urlencoded")] + public object TimaAndLanguageFromForm([FromForm] SettingsModel model) + { + return TimaAndLanguage(model); + } + + private object TimaAndLanguage(SettingsModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -1406,7 +1623,19 @@ namespace ASC.Api.Settings } [Create("owner")] - public object SendOwnerChangeInstructions(SettingsModel model) + public object SendOwnerChangeInstructionsFromBody([FromBody]SettingsModel model) + { + return SendOwnerChangeInstructions(model); + } + + [Create("owner")] + [Consumes("application/x-www-form-urlencoded")] + public object SendOwnerChangeInstructionsFromForm([FromForm] SettingsModel model) + { + return SendOwnerChangeInstructions(model); + } + + private object SendOwnerChangeInstructions(SettingsModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -1432,7 +1661,20 @@ namespace ASC.Api.Settings [Update("owner")] [Authorize(AuthenticationSchemes = "confirm", Roles = "PortalOwnerChange")] - public void Owner(SettingsModel model) + public void OwnerFromBody([FromBody]SettingsModel model) + { + Owner(model); + } + + [Update("owner")] + [Authorize(AuthenticationSchemes = "confirm", Roles = "PortalOwnerChange")] + [Consumes("application/x-www-form-urlencoded")] + public void OwnerFromForm([FromForm] SettingsModel model) + { + Owner(model); + } + + private void Owner(SettingsModel model) { var newOwner = Constants.LostUser; try @@ -1461,7 +1703,19 @@ namespace ASC.Api.Settings ///false [Update("defaultpage")] - public object SaveDefaultPageSettings(SettingsModel model) + public object SaveDefaultPageSettingsFromBody([FromBody]SettingsModel model) + { + return SaveDefaultPageSettings(model); + } + + [Update("defaultpage")] + [Consumes("application/x-www-form-urlencoded")] + public object SaveDefaultPageSettingsFromForm([FromForm] SettingsModel model) + { + return SaveDefaultPageSettings(model); + } + + private object SaveDefaultPageSettings(SettingsModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -1591,7 +1845,19 @@ namespace ASC.Api.Settings } [Create("customnavigation/create")] - public CustomNavigationItem CreateCustomNavigationItem(CustomNavigationItem item) + public CustomNavigationItem CreateCustomNavigationItemFromBody([FromBody]CustomNavigationItem item) + { + return CreateCustomNavigationItem(item); + } + + [Create("customnavigation/create")] + [Consumes("application/x-www-form-urlencoded")] + public CustomNavigationItem CreateCustomNavigationItemFromForm([FromForm] CustomNavigationItem item) + { + return CreateCustomNavigationItem(item); + } + + private CustomNavigationItem CreateCustomNavigationItem(CustomNavigationItem item) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); @@ -1661,12 +1927,17 @@ namespace ASC.Api.Settings } [Update("emailactivation")] - public EmailActivationSettings UpdateEmailActivationSettings(bool show) + public EmailActivationSettings UpdateEmailActivationSettingsFromBody([FromBody]EmailActivationSettings settings) { - var settings = new EmailActivationSettings { Show = show }; - SettingsManager.SaveForCurrentUser(settings); + return settings; + } + [Update("emailactivation")] + [Consumes("application/x-www-form-urlencoded")] + public EmailActivationSettings UpdateEmailActivationSettingsFromForm([FromForm]EmailActivationSettings settings) + { + SettingsManager.SaveForCurrentUser(settings); return settings; } @@ -1786,7 +2057,19 @@ namespace ASC.Api.Settings public readonly object Locker = new object(); [Create("encryption/start")] - public bool StartStorageEncryption(StorageEncryptionModel storageEncryption) + public bool StartStorageEncryptionFromBody([FromBody]StorageEncryptionModel storageEncryption) + { + return StartStorageEncryption(storageEncryption); + } + + [Create("encryption/start")] + [Consumes("application/x-www-form-urlencoded")] + public bool StartStorageEncryptionFromForm([FromForm] StorageEncryptionModel storageEncryption) + { + return StartStorageEncryption(storageEncryption); + } + + private bool StartStorageEncryption(StorageEncryptionModel storageEncryption) { lock (Locker) { @@ -1965,7 +2248,19 @@ namespace ASC.Api.Settings } [Update("storage")] - public StorageSettings UpdateStorage(StorageModel model) + public StorageSettings UpdateStorageFromBody([FromBody]StorageModel model) + { + return UpdateStorage(model); + } + + [Update("storage")] + [Consumes("application/x-www-form-urlencoded")] + public StorageSettings UpdateStorageFromForm([FromForm] StorageModel model) + { + return UpdateStorage(model); + } + + private StorageSettings UpdateStorage(StorageModel model) { try { @@ -2033,7 +2328,19 @@ namespace ASC.Api.Settings } [Update("storage/cdn")] - public CdnStorageSettings UpdateCdn(StorageModel model) + public CdnStorageSettings UpdateCdnFromBody([FromBody]StorageModel model) + { + return UpdateCdn(model); + } + + [Update("storage/cdn")] + [Consumes("application/x-www-form-urlencoded")] + public CdnStorageSettings UpdateCdnFromForm([FromForm] StorageModel model) + { + return UpdateCdn(model); + } + + private CdnStorageSettings UpdateCdn(StorageModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); if (!CoreBaseSettings.Standalone) return null; @@ -2130,7 +2437,19 @@ namespace ASC.Api.Settings ///false [Create("rebranding/company")] - public bool SaveCompanyWhiteLabelSettings(CompanyWhiteLabelSettingsWrapper companyWhiteLabelSettingsWrapper) + public bool SaveCompanyWhiteLabelSettingsFromBody([FromBody] CompanyWhiteLabelSettingsWrapper companyWhiteLabelSettingsWrapper) + { + return SaveCompanyWhiteLabelSettings(companyWhiteLabelSettingsWrapper); + } + + [Create("rebranding/company")] + [Consumes("application/x-www-form-urlencoded")] + public bool SaveCompanyWhiteLabelSettingsFromForm([FromForm] CompanyWhiteLabelSettingsWrapper companyWhiteLabelSettingsWrapper) + { + return SaveCompanyWhiteLabelSettings(companyWhiteLabelSettingsWrapper); + } + + private bool SaveCompanyWhiteLabelSettings(CompanyWhiteLabelSettingsWrapper companyWhiteLabelSettingsWrapper) { if (companyWhiteLabelSettingsWrapper.Settings == null) throw new ArgumentNullException("settings"); @@ -2164,7 +2483,19 @@ namespace ASC.Api.Settings ///false [Create("rebranding/additional")] - public bool SaveAdditionalWhiteLabelSettings(AdditionalWhiteLabelSettingsWrapper wrapper) + public bool SaveAdditionalWhiteLabelSettingsFromBody([FromBody]AdditionalWhiteLabelSettingsWrapper wrapper) + { + return SaveAdditionalWhiteLabelSettings(wrapper); + } + + [Create("rebranding/additional")] + [Consumes("application/x-www-form-urlencoded")] + public bool SaveAdditionalWhiteLabelSettingsFromForm([FromForm] AdditionalWhiteLabelSettingsWrapper wrapper) + { + return SaveAdditionalWhiteLabelSettings(wrapper); + } + + private bool SaveAdditionalWhiteLabelSettings(AdditionalWhiteLabelSettingsWrapper wrapper) { if (wrapper.Settings == null) throw new ArgumentNullException("settings"); @@ -2196,7 +2527,19 @@ namespace ASC.Api.Settings ///false [Create("rebranding/mail")] - public bool SaveMailWhiteLabelSettings(MailWhiteLabelSettings settings) + public bool SaveMailWhiteLabelSettingsFromBody([FromBody] MailWhiteLabelSettings settings) + { + return SaveMailWhiteLabelSettings(settings); + } + + ///false + [Create("rebranding/mail")] + public bool SaveMailWhiteLabelSettingsFromForm([FromForm] MailWhiteLabelSettings settings) + { + return SaveMailWhiteLabelSettings(settings); + } + + private bool SaveMailWhiteLabelSettings(MailWhiteLabelSettings settings) { if (settings == null) throw new ArgumentNullException("settings"); @@ -2208,13 +2551,25 @@ namespace ASC.Api.Settings ///false [Update("rebranding/mail")] - public bool UpdateMailWhiteLabelSettings(bool footerEnabled) + public bool UpdateMailWhiteLabelSettingsFromBody([FromBody]MailWhiteLabelSettingsModel model) + { + return UpdateMailWhiteLabelSettings(model); + } + + [Update("rebranding/mail")] + [Consumes("application/x-www-form-urlencoded")] + public bool UpdateMailWhiteLabelSettingsFromForm([FromForm]MailWhiteLabelSettingsModel model) + { + return UpdateMailWhiteLabelSettings(model); + } + + private bool UpdateMailWhiteLabelSettings(MailWhiteLabelSettingsModel model) { DemandRebrandingPermission(); var settings = SettingsManager.LoadForDefaultTenant(); - settings.FooterEnabled = footerEnabled; + settings.FooterEnabled = model.FooterEnabled; SettingsManager.SaveForDefaultTenant(settings); @@ -2267,7 +2622,19 @@ namespace ASC.Api.Settings } [Create("authservice")] - public bool SaveAuthKeys(AuthServiceModel model) + public bool SaveAuthKeysFromBody([FromBody]AuthServiceModel model) + { + return SaveAuthKeys(model); + } + + [Create("authservice")] + [Consumes("application/x-www-form-urlencoded")] + public bool SaveAuthKeysFromForm([FromForm] AuthServiceModel model) + { + return SaveAuthKeys(model); + } + + private bool SaveAuthKeys(AuthServiceModel model) { PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings); if (!SetupInfo.IsVisibleSettings(ManagementType.ThirdPartyAuthorization.ToString())) diff --git a/web/ASC.Web.Api/Controllers/SmtpSettingsController.cs b/web/ASC.Web.Api/Controllers/SmtpSettingsController.cs index ba5928722f..5b0fe5ff21 100644 --- a/web/ASC.Web.Api/Controllers/SmtpSettingsController.cs +++ b/web/ASC.Web.Api/Controllers/SmtpSettingsController.cs @@ -80,7 +80,19 @@ namespace ASC.Api.Settings } [Create("smtp")] - public SmtpSettingsWrapper SaveSmtpSettings(SmtpSettingsWrapper smtpSettings) + public SmtpSettingsWrapper SaveSmtpSettingsFromBody([FromBody]SmtpSettingsWrapper smtpSettings) + { + return SaveSmtpSettings(smtpSettings); + } + + [Create("smtp")] + [Consumes("application/x-www-form-urlencoded")] + public SmtpSettingsWrapper SaveSmtpSettingsFromForm([FromForm] SmtpSettingsWrapper smtpSettings) + { + return SaveSmtpSettings(smtpSettings); + } + + private SmtpSettingsWrapper SaveSmtpSettings(SmtpSettingsWrapper smtpSettings) { CheckSmtpPermissions(); diff --git a/web/ASC.Web.Api/Models/MailWhiteLabelSettingsModel.cs b/web/ASC.Web.Api/Models/MailWhiteLabelSettingsModel.cs new file mode 100644 index 0000000000..e1ac42ec56 --- /dev/null +++ b/web/ASC.Web.Api/Models/MailWhiteLabelSettingsModel.cs @@ -0,0 +1,7 @@ +namespace ASC.Web.Api.Models +{ + public class MailWhiteLabelSettingsModel + { + public bool FooterEnabled { get; set; } + } +} diff --git a/web/ASC.Web.Api/Models/WhiteLabelModel.cs b/web/ASC.Web.Api/Models/WhiteLabelModel.cs index c720bfd48e..23b10891e2 100644 --- a/web/ASC.Web.Api/Models/WhiteLabelModel.cs +++ b/web/ASC.Web.Api/Models/WhiteLabelModel.cs @@ -2,8 +2,6 @@ using ASC.Api.Collections; -using Microsoft.AspNetCore.Http; - namespace ASC.Web.Api.Models { public class WhiteLabelModel