diff --git a/common/ASC.MessagingSystem/DbSender/DbMessageSender.cs b/common/ASC.MessagingSystem/DbSender/DbMessageSender.cs index f1a42ce174..46d9765e92 100644 --- a/common/ASC.MessagingSystem/DbSender/DbMessageSender.cs +++ b/common/ASC.MessagingSystem/DbSender/DbMessageSender.cs @@ -25,8 +25,8 @@ using System; -using System.Configuration; using ASC.Common.Logging; +using ASC.Common.Utils; namespace ASC.MessagingSystem.DbSender { @@ -38,7 +38,7 @@ namespace ASC.MessagingSystem.DbSender { get { - var setting = ConfigurationManager.AppSettings["messaging.enabled"]; + var setting = ConfigurationManager.AppSettings["messaging:enabled"]; return !string.IsNullOrEmpty(setting) && setting == "true"; } } diff --git a/common/ASC.MessagingSystem/MessageService.cs b/common/ASC.MessagingSystem/MessageService.cs index 5445562b59..692dc2e285 100644 --- a/common/ASC.MessagingSystem/MessageService.cs +++ b/common/ASC.MessagingSystem/MessageService.cs @@ -25,149 +25,152 @@ using System.Collections.Generic; -using System.Configuration; using System.Linq; + using ASC.Common.Logging; using ASC.MessagingSystem.DbSender; using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Configuration; namespace ASC.MessagingSystem { - public static class MessageService + public class MessageService { private static readonly ILog log = LogManager.GetLogger("ASC.Messaging"); - private static readonly IMessageSender sender; + private readonly IMessageSender sender; + private readonly HttpRequest request; - static MessageService() + public MessageService(IConfiguration configuration, IHttpContextAccessor httpContextAccessor) { - if (ConfigurationManager.AppSettings["messaging.enabled"] != "true") + if (configuration["messaging:enabled"] != "true") { return; } sender = new DbMessageSender(); + request = httpContextAccessor?.HttpContext?.Request; } #region HttpRequest - public static void Send(HttpRequest request, MessageAction action) + public void Send(MessageAction action) { - SendRequestMessage(request, null, action, null); + SendRequestMessage(null, action, null); } - public static void Send(HttpRequest request, MessageAction action, string d1) + public void Send(MessageAction action, string d1) { - SendRequestMessage(request, null, action, null, d1); + SendRequestMessage(null, action, null, d1); } - public static void Send(HttpRequest request, MessageAction action, string d1, string d2) + public void Send(MessageAction action, string d1, string d2) { - SendRequestMessage(request, null, action, null, d1, d2); + SendRequestMessage(null, action, null, d1, d2); } - public static void Send(HttpRequest request, MessageAction action, string d1, string d2, string d3) + public void Send(MessageAction action, string d1, string d2, string d3) { - SendRequestMessage(request, null, action, null, d1, d2, d3); + SendRequestMessage(null, action, null, d1, d2, d3); } - public static void Send(HttpRequest request, MessageAction action, string d1, string d2, string d3, string d4) + public void Send(MessageAction action, string d1, string d2, string d3, string d4) { - SendRequestMessage(request, null, action, null, d1, d2, d3, d4); + SendRequestMessage(null, action, null, d1, d2, d3, d4); } - public static void Send(HttpRequest request, MessageAction action, IEnumerable d1, string d2) + public void Send(MessageAction action, IEnumerable d1, string d2) { - SendRequestMessage(request, null, action, null, string.Join(", ", d1), d2); + SendRequestMessage(null, action, null, string.Join(", ", d1), d2); } - public static void Send(HttpRequest request, MessageAction action, string d1, IEnumerable d2) + public void Send(MessageAction action, string d1, IEnumerable d2) { - SendRequestMessage(request, null, action, null, d1, string.Join(", ", d2)); + SendRequestMessage(null, action, null, d1, string.Join(", ", d2)); } - public static void Send(HttpRequest request, MessageAction action, string d1, string d2, IEnumerable d3) + public void Send(MessageAction action, string d1, string d2, IEnumerable d3) { - SendRequestMessage(request, null, action, null, d1, d2, string.Join(", ", d3)); + SendRequestMessage(null, action, null, d1, d2, string.Join(", ", d3)); } - public static void Send(HttpRequest request, MessageAction action, IEnumerable d1) + public void Send(MessageAction action, IEnumerable d1) { - SendRequestMessage(request, null, action, null, string.Join(", ", d1)); + SendRequestMessage(null, action, null, string.Join(", ", d1)); } - public static void Send(HttpRequest request, string loginName, MessageAction action) + public void Send(string loginName, MessageAction action) { - SendRequestMessage(request, loginName, action, null); + SendRequestMessage(loginName, action, null); } - public static void Send(HttpRequest request, string loginName, MessageAction action, string d1) + public void Send(string loginName, MessageAction action, string d1) { - SendRequestMessage(request, loginName, action, null, d1); + SendRequestMessage(loginName, action, null, d1); } #endregion #region HttpRequest & Target - public static void Send(HttpRequest request, MessageAction action, MessageTarget target) + public void Send(MessageAction action, MessageTarget target) { - SendRequestMessage(request, null, action, target); + SendRequestMessage(null, action, target); } - public static void Send(HttpRequest request, MessageAction action, MessageTarget target, string d1) + public void Send(MessageAction action, MessageTarget target, string d1) { - SendRequestMessage(request, null, action, target, d1); + SendRequestMessage(null, action, target, d1); } - public static void Send(HttpRequest request, MessageAction action, MessageTarget target, string d1, string d2) + public void Send(MessageAction action, MessageTarget target, string d1, string d2) { - SendRequestMessage(request, null, action, target, d1, d2); + SendRequestMessage(null, action, target, d1, d2); } - public static void Send(HttpRequest request, MessageAction action, MessageTarget target, string d1, string d2, string d3) + public void Send(MessageAction action, MessageTarget target, string d1, string d2, string d3) { - SendRequestMessage(request, null, action, target, d1, d2, d3); + SendRequestMessage(null, action, target, d1, d2, d3); } - public static void Send(HttpRequest request, MessageAction action, MessageTarget target, string d1, string d2, string d3, string d4) + public void Send(MessageAction action, MessageTarget target, string d1, string d2, string d3, string d4) { - SendRequestMessage(request, null, action, target, d1, d2, d3, d4); + SendRequestMessage(null, action, target, d1, d2, d3, d4); } - public static void Send(HttpRequest request, MessageAction action, MessageTarget target, IEnumerable d1, string d2) + public void Send(MessageAction action, MessageTarget target, IEnumerable d1, string d2) { - SendRequestMessage(request, null, action, target, string.Join(", ", d1), d2); + SendRequestMessage(null, action, target, string.Join(", ", d1), d2); } - public static void Send(HttpRequest request, MessageAction action, MessageTarget target, string d1, IEnumerable d2) + public void Send(MessageAction action, MessageTarget target, string d1, IEnumerable d2) { - SendRequestMessage(request, null, action, target, d1, string.Join(", ", d2)); + SendRequestMessage(null, action, target, d1, string.Join(", ", d2)); } - public static void Send(HttpRequest request, MessageAction action, MessageTarget target, string d1, string d2, IEnumerable d3) + public void Send(MessageAction action, MessageTarget target, string d1, string d2, IEnumerable d3) { - SendRequestMessage(request, null, action, target, d1, d2, string.Join(", ", d3)); + SendRequestMessage(null, action, target, d1, d2, string.Join(", ", d3)); } - public static void Send(HttpRequest request, MessageAction action, MessageTarget target, IEnumerable d1) + public void Send(MessageAction action, MessageTarget target, IEnumerable d1) { - SendRequestMessage(request, null, action, target, string.Join(", ", d1)); + SendRequestMessage(null, action, target, string.Join(", ", d1)); } - public static void Send(HttpRequest request, string loginName, MessageAction action, MessageTarget target) + public void Send(string loginName, MessageAction action, MessageTarget target) { - SendRequestMessage(request, loginName, action, target); + SendRequestMessage(loginName, action, target); } - public static void Send(HttpRequest request, string loginName, MessageAction action, MessageTarget target, string d1) + public void Send(string loginName, MessageAction action, MessageTarget target, string d1) { - SendRequestMessage(request, loginName, action, target, d1); + SendRequestMessage(loginName, action, target, d1); } #endregion - private static void SendRequestMessage(HttpRequest request, string loginName, MessageAction action, MessageTarget target, params string[] description) + private void SendRequestMessage(string loginName, MessageAction action, MessageTarget target, params string[] description) { if (sender == null) return; @@ -185,27 +188,27 @@ namespace ASC.MessagingSystem #region HttpHeaders - public static void Send(MessageUserData userData, Dictionary httpHeaders, MessageAction action) + public void Send(MessageUserData userData, Dictionary httpHeaders, MessageAction action) { SendHeadersMessage(userData, httpHeaders, action, null); } - public static void Send(Dictionary httpHeaders, MessageAction action) + public void Send(Dictionary httpHeaders, MessageAction action) { SendHeadersMessage(null, httpHeaders, action, null); } - public static void Send(Dictionary httpHeaders, MessageAction action, string d1) + public void Send(Dictionary httpHeaders, MessageAction action, string d1) { SendHeadersMessage(null, httpHeaders, action, null, d1); } - public static void Send(Dictionary httpHeaders, MessageAction action, IEnumerable d1) + public void Send(Dictionary httpHeaders, MessageAction action, IEnumerable d1) { SendHeadersMessage(null, httpHeaders, action, null, d1 != null ? d1.ToArray() : null); } - public static void Send(MessageUserData userData, Dictionary httpHeaders, MessageAction action, MessageTarget target) + public void Send(MessageUserData userData, Dictionary httpHeaders, MessageAction action, MessageTarget target) { SendHeadersMessage(userData, httpHeaders, action, target); } @@ -214,24 +217,24 @@ namespace ASC.MessagingSystem #region HttpHeaders & Target - public static void Send(Dictionary httpHeaders, MessageAction action, MessageTarget target) + public void Send(Dictionary httpHeaders, MessageAction action, MessageTarget target) { SendHeadersMessage(null, httpHeaders, action, target); } - public static void Send(Dictionary httpHeaders, MessageAction action, MessageTarget target, string d1) + public void Send(Dictionary httpHeaders, MessageAction action, MessageTarget target, string d1) { SendHeadersMessage(null, httpHeaders, action, target, d1); } - public static void Send(Dictionary httpHeaders, MessageAction action, MessageTarget target, IEnumerable d1) + public void Send(Dictionary httpHeaders, MessageAction action, MessageTarget target, IEnumerable d1) { SendHeadersMessage(null, httpHeaders, action, target, d1 != null ? d1.ToArray() : null); } #endregion - private static void SendHeadersMessage(MessageUserData userData, Dictionary httpHeaders, MessageAction action, MessageTarget target, params string[] description) + private void SendHeadersMessage(MessageUserData userData, Dictionary httpHeaders, MessageAction action, MessageTarget target, params string[] description) { if (sender == null) return; @@ -243,33 +246,23 @@ namespace ASC.MessagingSystem #region Initiator - public static void Send(HttpRequest request, MessageInitiator initiator, MessageAction action, params string[] description) + public void Send(MessageInitiator initiator, MessageAction action, params string[] description) { - SendInitiatorMessage(request, initiator.ToString(), action, null, description); - } - - public static void Send(MessageInitiator initiator, MessageAction action, params string[] description) - { - SendInitiatorMessage(null, initiator.ToString(), action, null, description); + SendInitiatorMessage(initiator.ToString(), action, null, description); } #endregion #region Initiator & Target - public static void Send(HttpRequest request, MessageInitiator initiator, MessageAction action, MessageTarget target, params string[] description) + public void Send(MessageInitiator initiator, MessageAction action, MessageTarget target, params string[] description) { - SendInitiatorMessage(request, initiator.ToString(), action, target, description); - } - - public static void Send(MessageInitiator initiator, MessageAction action, MessageTarget target, params string[] description) - { - SendInitiatorMessage(null, initiator.ToString(), action, target, description); + SendInitiatorMessage(initiator.ToString(), action, target, description); } #endregion - private static void SendInitiatorMessage(HttpRequest request, string initiator, MessageAction action, MessageTarget target, params string[] description) + private void SendInitiatorMessage(string initiator, MessageAction action, MessageTarget target, params string[] description) { if (sender == null) return; diff --git a/products/ASC.People/Controllers/PeopleController.cs b/products/ASC.People/Controllers/PeopleController.cs index c4d7932e21..2ab740422b 100644 --- a/products/ASC.People/Controllers/PeopleController.cs +++ b/products/ASC.People/Controllers/PeopleController.cs @@ -35,11 +35,13 @@ namespace ASC.Employee.Core.Controllers { public Common.Logging.LogManager LogManager { get; } public ApiContext ApiContext { get; } + public MessageService MessageService { get; } - public PeopleController(Common.Logging.LogManager logManager) + public PeopleController(Common.Logging.LogManager logManager, MessageService messageService) { LogManager = logManager; ApiContext = HttpContext; + MessageService = messageService; } [Read, Read(false)] @@ -343,7 +345,7 @@ namespace ASC.Employee.Core.Controllers user = UserManagerWrapper.AddUser(user, memberModel.Password, false, true, memberModel.IsVisitor); var messageAction = memberModel.IsVisitor ? MessageAction.GuestCreated : MessageAction.UserCreated; - MessageService.Send(Request, messageAction, MessageTarget.Create(user.ID), user.DisplayUserName(false)); + MessageService.Send(messageAction, MessageTarget.Create(user.ID), user.DisplayUserName(false)); UpdateDepartments(memberModel.Department, user); @@ -495,12 +497,12 @@ namespace ASC.Employee.Core.Controllers } CoreContext.UserManager.SaveUserInfo(user, memberModel.IsVisitor); - MessageService.Send(Request, MessageAction.UserUpdated, MessageTarget.Create(user.ID), user.DisplayUserName(false)); + MessageService.Send(MessageAction.UserUpdated, MessageTarget.Create(user.ID), user.DisplayUserName(false)); if (memberModel.Disable.HasValue && memberModel.Disable.Value) { CookiesManager.ResetUserCookie(user.ID); - MessageService.Send(Common.HttpContext.Current.Request, MessageAction.CookieSettingsUpdated); + MessageService.Send(MessageAction.CookieSettingsUpdated); } return new EmployeeWraperFull(user); @@ -528,7 +530,7 @@ namespace ASC.Employee.Core.Controllers CoreContext.UserManager.DeleteUser(user.ID); //QueueWorker.StartRemove(Common.HttpContext.Current, TenantProvider.CurrentTenantID, user, SecurityContext.CurrentAccount.ID, false); - MessageService.Send(Request, MessageAction.UserDeleted, MessageTarget.Create(user.ID), userName); + MessageService.Send(MessageAction.UserDeleted, MessageTarget.Create(user.ID), userName); return new EmployeeWraperFull(user); } @@ -598,7 +600,7 @@ namespace ASC.Employee.Core.Controllers } CoreContext.UserManager.SaveUserInfo(user); - MessageService.Send(Request, MessageAction.UserAddedAvatar, MessageTarget.Create(user.ID), user.DisplayUserName(false)); + MessageService.Send(MessageAction.UserAddedAvatar, MessageTarget.Create(user.ID), user.DisplayUserName(false)); return new ThumbnailsDataWrapper(user.ID); } @@ -616,7 +618,7 @@ namespace ASC.Employee.Core.Controllers UserPhotoManager.RemovePhoto(user.ID); CoreContext.UserManager.SaveUserInfo(user); - MessageService.Send(Request, MessageAction.UserDeletedAvatar, MessageTarget.Create(user.ID), user.DisplayUserName(false)); + MessageService.Send(MessageAction.UserDeletedAvatar, MessageTarget.Create(user.ID), user.DisplayUserName(false)); return new ThumbnailsDataWrapper(user.ID); } @@ -649,7 +651,7 @@ namespace ASC.Employee.Core.Controllers } CoreContext.UserManager.SaveUserInfo(user); - MessageService.Send(Common.HttpContext.Current.Request, MessageAction.UserUpdatedAvatarThumbnails, MessageTarget.Create(user.ID), user.DisplayUserName(false)); + MessageService.Send(MessageAction.UserUpdatedAvatarThumbnails, MessageTarget.Create(user.ID), user.DisplayUserName(false)); return new ThumbnailsDataWrapper(user.ID); } @@ -659,7 +661,7 @@ namespace ASC.Employee.Core.Controllers [Create("password"), Create("password", false)] public string SendUserPassword(string email) { - var userInfo = UserManagerWrapper.SendUserPassword(email); + var userInfo = UserManagerWrapper.SendUserPassword(email, MessageService); return string.Format(Resource.MessageYourPasswordSuccessfullySendedToEmail, userInfo.Email); } @@ -690,10 +692,10 @@ namespace ASC.Employee.Core.Controllers if (!string.IsNullOrEmpty(memberModel.Password)) { SecurityContext.SetUserPassword(userid, memberModel.Password); - MessageService.Send(Common.HttpContext.Current.Request, MessageAction.UserUpdatedPassword); + MessageService.Send(MessageAction.UserUpdatedPassword); CookiesManager.ResetUserCookie(userid); - MessageService.Send(Common.HttpContext.Current.Request, MessageAction.CookieSettingsUpdated); + MessageService.Send(MessageAction.CookieSettingsUpdated); } return new EmployeeWraperFull(GetUserInfo(userid.ToString())); @@ -767,7 +769,7 @@ namespace ASC.Employee.Core.Controllers } } - MessageService.Send(Request, MessageAction.UsersUpdatedType, MessageTarget.Create(users.Select(x => x.ID)), users.Select(x => x.DisplayUserName(false))); + MessageService.Send(MessageAction.UsersUpdatedType, MessageTarget.Create(users.Select(x => x.ID)), users.Select(x => x.DisplayUserName(false))); return users.Select(user => new EmployeeWraperFull(user)); } @@ -803,12 +805,12 @@ namespace ASC.Employee.Core.Controllers CoreContext.UserManager.SaveUserInfo(user); CookiesManager.ResetUserCookie(user.ID); - MessageService.Send(Common.HttpContext.Current.Request, MessageAction.CookieSettingsUpdated); + MessageService.Send(MessageAction.CookieSettingsUpdated); break; } } - MessageService.Send(Request, MessageAction.UsersUpdatedStatus, MessageTarget.Create(users.Select(x => x.ID)), users.Select(x => x.DisplayUserName(false))); + MessageService.Send(MessageAction.UsersUpdatedStatus, MessageTarget.Create(users.Select(x => x.ID)), users.Select(x => x.DisplayUserName(false))); return users.Select(user => new EmployeeWraperFull(user)); } @@ -843,7 +845,7 @@ namespace ASC.Employee.Core.Controllers } } - MessageService.Send(Request, MessageAction.UsersSentActivationInstructions, MessageTarget.Create(users.Select(x => x.ID)), users.Select(x => x.DisplayUserName(false))); + MessageService.Send(MessageAction.UsersSentActivationInstructions, MessageTarget.Create(users.Select(x => x.ID)), users.Select(x => x.DisplayUserName(false))); return users.Select(user => new EmployeeWraperFull(user)); } @@ -871,7 +873,7 @@ namespace ASC.Employee.Core.Controllers //QueueWorker.StartRemove(HttpContext.Current, TenantProvider.CurrentTenantID, user, SecurityContext.CurrentAccount.ID, false); } - MessageService.Send(Request, MessageAction.UsersDeleted, MessageTarget.Create(users.Select(x => x.ID)), userNames); + MessageService.Send(MessageAction.UsersDeleted, MessageTarget.Create(users.Select(x => x.ID)), userNames); return users.Select(user => new EmployeeWraperFull(user)); } @@ -886,7 +888,7 @@ namespace ASC.Employee.Core.Controllers throw new SecurityException(); StudioNotifyService.Instance.SendMsgProfileDeletion(user); - MessageService.Send(Common.HttpContext.Current.Request, MessageAction.UserSentDeleteInstructions); + MessageService.Send(MessageAction.UserSentDeleteInstructions); return string.Format(Resource.SuccessfullySentNotificationDeleteUserInfoMessage, "" + user.Email + ""); } @@ -900,7 +902,7 @@ namespace ASC.Employee.Core.Controllers if (string.IsNullOrEmpty(profile.AuthorizationError)) { GetLinker().AddLink(SecurityContext.CurrentAccount.ID.ToString(), profile); - MessageService.Send(Common.HttpContext.Current.Request, MessageAction.UserLinkedSocialAccount, GetMeaningfulProviderName(profile.Provider)); + MessageService.Send(MessageAction.UserLinkedSocialAccount, GetMeaningfulProviderName(profile.Provider)); } else { @@ -916,7 +918,7 @@ namespace ASC.Employee.Core.Controllers public void UnlinkAccount(string provider) { GetLinker().RemoveProvider(SecurityContext.CurrentAccount.ID.ToString(), provider); - MessageService.Send(Common.HttpContext.Current.Request, MessageAction.UserUnlinkedSocialAccount, GetMeaningfulProviderName(provider)); + MessageService.Send(MessageAction.UserUnlinkedSocialAccount, GetMeaningfulProviderName(provider)); } private static AccountLinker GetLinker() diff --git a/web/ASC.Web.Api/Startup.cs b/web/ASC.Web.Api/Startup.cs index b370fec5b1..b3e9893d02 100644 --- a/web/ASC.Web.Api/Startup.cs +++ b/web/ASC.Web.Api/Startup.cs @@ -20,7 +20,7 @@ using ASC.Web.Core; using ASC.Data.Storage.Configuration; using Autofac; - +using ASC.MessagingSystem; namespace ASC.Web.Api { @@ -68,7 +68,8 @@ namespace ASC.Web.Api services.AddLogManager() .AddStorage() - .AddWebItemManager(); + .AddWebItemManager() + .AddTransient(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) diff --git a/web/ASC.Web.Api/appsettings.json b/web/ASC.Web.Api/appsettings.json index c1cfd66175..00cdaf10f8 100644 --- a/web/ASC.Web.Api/appsettings.json +++ b/web/ASC.Web.Api/appsettings.json @@ -30,6 +30,9 @@ "daemon-email": "mail-daemon@onlyoffice.com", "server-mailbox-limit-per-user": 2 }, + "messaging": { + "enabled": "true" + }, "version": { "release": { "date": "", diff --git a/web/ASC.Web.Core/Users/UserManagerWrapper.cs b/web/ASC.Web.Core/Users/UserManagerWrapper.cs index 42bc74bea9..383459b24e 100644 --- a/web/ASC.Web.Core/Users/UserManagerWrapper.cs +++ b/web/ASC.Web.Core/Users/UserManagerWrapper.cs @@ -163,7 +163,7 @@ namespace ASC.Web.Core.Users throw new Exception(GenerateErrorMessage(passwordSettingsObj)); } - public static UserInfo SendUserPassword(string email) + public static UserInfo SendUserPassword(string email, MessageService messageService) { email = (email ?? "").Trim(); if (!email.TestEmailRegex()) throw new ArgumentNullException("email", Resource.ErrorNotCorrectEmail); @@ -196,7 +196,7 @@ namespace ASC.Web.Core.Users StudioNotifyService.Instance.UserPasswordChange(userInfo); var displayUserName = userInfo.DisplayUserName(false); - MessageService.Send(HttpContext.Current.Request, MessageAction.UserSentPasswordChangeInstructions, displayUserName); + messageService.Send(MessageAction.UserSentPasswordChangeInstructions, displayUserName); return userInfo; } diff --git a/web/ASC.Web.Studio/appsettings.json b/web/ASC.Web.Studio/appsettings.json index 5ca6a66254..5f0352ddd3 100644 --- a/web/ASC.Web.Studio/appsettings.json +++ b/web/ASC.Web.Studio/appsettings.json @@ -30,6 +30,9 @@ "daemon-email": "mail-daemon@onlyoffice.com", "server-mailbox-limit-per-user": 2 }, + "messaging": { + "enabled": "enabled" + }, "version": { "release": { "date": "", @@ -41,7 +44,7 @@ "alias": { "min": "" }, - "images": "images", + "images": "images", "hide-settings": "Monitoring,LdapSettings,DocService,MailService,PublicPortal,ProxyHttpContent,SpamSubscription,FullTextSearch", "hub": { "url": "",