From 49b259abff08f09469de632229dcf39af3746640 Mon Sep 17 00:00:00 2001 From: pavelbannov Date: Fri, 9 Aug 2019 15:28:19 +0300 Subject: [PATCH] refactoring --- common/ASC.Api.Core/Core/ApiContext.cs | 2 +- .../Middleware/IpSecurityFilter.cs | 2 +- .../Middleware/ProductSecurityFilter.cs | 2 +- .../Context/Impl/AuthManager.cs | 20 +- .../Context/Impl/UserManager.cs | 22 +- .../Context/SecurityContext.cs | 14 +- .../Notify/Engine/NotifyEngine.cs | 2 +- .../Notify/IRecipientsProvider.cs | 2 +- .../Notify/Jabber/JabberServiceClient.cs | 2 +- .../Notify/RecipientProviderImpl.cs | 6 +- .../ASC.Core.Common/Tests/UserManagerTest.cs | 4 +- .../ReassignProgressItem.cs | 12 +- .../ASC.Data.Reassigns/RemoveProgressItem.cs | 2 +- common/ASC.Data.Storage/StaticUploader.cs | 2 +- common/ASC.Data.Storage/StorageUploader.cs | 2 +- .../LoginProviders/BlockchainLoginProvider.cs | 2 +- .../Twilio/TwilioResponseHelper.cs | 2 +- .../Server/Controllers/GroupController.cs | 52 ++-- .../Server/Controllers/PeopleController.cs | 229 +++++++++--------- .../Server/Models/EmployeeWraper.cs | 4 +- .../Server/Models/EmployeeWraperFull.cs | 2 +- .../Server/Models/GroupWrapperFull.cs | 2 +- .../Server/Models/GroupWrapperSummary.cs | 2 +- products/ASC.People/Server/Startup.cs | 2 +- .../Controllers/AuthenticationController.cs | 4 +- web/ASC.Web.Core/Calendars/SharingOptions.cs | 2 +- web/ASC.Web.Core/CookiesManager.cs | 12 +- .../Extensions/UserInfoExtension.cs | 8 +- .../Helpers/AuthorizationHelper.cs | 2 +- .../Notify/NotifyConfiguration.cs | 10 +- .../Notify/StudioNotifyService.cs | 77 +++--- .../Notify/StudioNotifyServiceSender.cs | 4 +- .../Notify/StudioPeriodicNotify.cs | 10 +- .../Notify/StudioWhatsNewNotify.cs | 8 +- web/ASC.Web.Core/Notify/TagValues.cs | 4 +- web/ASC.Web.Core/Users/DisplayUserSettings.cs | 6 +- web/ASC.Web.Core/Users/UserInfoExtension.cs | 12 +- web/ASC.Web.Core/Users/UserManagerWrapper.cs | 12 +- web/ASC.Web.Core/Utility/CommonLinkUtility.cs | 27 +-- web/ASC.Web.Core/Utility/TenantExtra.cs | 9 +- web/ASC.Web.Core/WebItemSecurity.cs | 10 +- 41 files changed, 305 insertions(+), 305 deletions(-) diff --git a/common/ASC.Api.Core/Core/ApiContext.cs b/common/ASC.Api.Core/Core/ApiContext.cs index 8e7dd4383d..248af01211 100644 --- a/common/ASC.Api.Core/Core/ApiContext.cs +++ b/common/ASC.Api.Core/Core/ApiContext.cs @@ -38,7 +38,7 @@ namespace ASC.Api.Core public HttpContext HttpContext { get; set; } private IQueryCollection Query { get; set; } private Tenant tenant; - public Tenant Tenant { get { return tenant ?? (tenant = CoreContext.TenantManager.GetCurrentTenant()); } } + public Tenant Tenant { get { return tenant ?? (tenant = CoreContext.TenantManager.GetCurrentTenant(HttpContext)); } } public ApiContext(HttpContext httpContext) { diff --git a/common/ASC.Api.Core/Middleware/IpSecurityFilter.cs b/common/ASC.Api.Core/Middleware/IpSecurityFilter.cs index dfe1ca1759..267159ac06 100644 --- a/common/ASC.Api.Core/Middleware/IpSecurityFilter.cs +++ b/common/ASC.Api.Core/Middleware/IpSecurityFilter.cs @@ -22,7 +22,7 @@ namespace ASC.Api.Core.Middleware public void OnResourceExecuting(ResourceExecutingContext context) { - var tenant = CoreContext.TenantManager.GetCurrentTenant(); + var tenant = CoreContext.TenantManager.GetCurrentTenant(context.HttpContext); var settings = IPRestrictionsSettings.LoadForTenant(tenant.TenantId); if (settings.Enable && SecurityContext.IsAuthenticated && !IPSecurity.IPSecurity.Verify(context.HttpContext, tenant)) { diff --git a/common/ASC.Api.Core/Middleware/ProductSecurityFilter.cs b/common/ASC.Api.Core/Middleware/ProductSecurityFilter.cs index e00b3fb9e4..abd99e0e1b 100644 --- a/common/ASC.Api.Core/Middleware/ProductSecurityFilter.cs +++ b/common/ASC.Api.Core/Middleware/ProductSecurityFilter.cs @@ -69,7 +69,7 @@ namespace ASC.Api.Core.Middleware { CallContext.SetData("asc.web.product_id", pid); } - if (!WebItemSecurity.IsAvailableForMe(CoreContext.TenantManager.GetCurrentTenant(), pid)) + if (!WebItemSecurity.IsAvailableForMe(CoreContext.TenantManager.GetCurrentTenant(context.HttpContext), pid)) { context.Result = new StatusCodeResult((int)HttpStatusCode.Forbidden); log.WarnFormat("Product {0} denied for user {1}", controllerActionDescriptor.ControllerName, SecurityContext.CurrentAccount); diff --git a/common/ASC.Core.Common/Context/Impl/AuthManager.cs b/common/ASC.Core.Common/Context/Impl/AuthManager.cs index 3c9c0adcef..68f0862d7a 100644 --- a/common/ASC.Core.Common/Context/Impl/AuthManager.cs +++ b/common/ASC.Core.Common/Context/Impl/AuthManager.cs @@ -46,32 +46,32 @@ namespace ASC.Core public IUserAccount[] GetUserAccounts(Tenant tenant) { - return CoreContext.UserManager.GetUsers(tenant, EmployeeStatus.Active).Select(u => ToAccount(u)).ToArray(); + return CoreContext.UserManager.GetUsers(tenant, EmployeeStatus.Active).Select(u => ToAccount(tenant.TenantId, u)).ToArray(); } - public void SetUserPassword(Guid userID, string password) + public void SetUserPassword(int tenantId, Guid userID, string password) { - userService.SetUserPassword(CoreContext.TenantManager.GetCurrentTenant().TenantId, userID, password); + userService.SetUserPassword(tenantId, userID, password); } - public string GetUserPasswordHash(Guid userID) + public string GetUserPasswordHash(int tenantId, Guid userID) { - return userService.GetUserPassword(CoreContext.TenantManager.GetCurrentTenant().TenantId, userID); + return userService.GetUserPassword(tenantId, userID); } - public IAccount GetAccountByID(Guid id) + public IAccount GetAccountByID(int tenantId, Guid id) { var s = ASC.Core.Configuration.Constants.SystemAccounts.FirstOrDefault(a => a.ID == id); if (s != null) return s; - var u = CoreContext.UserManager.GetUsers(id); - return !Constants.LostUser.Equals(u) && u.Status == EmployeeStatus.Active ? (IAccount)ToAccount(u) : ASC.Core.Configuration.Constants.Guest; + var u = CoreContext.UserManager.GetUsers(tenantId, id); + return !Constants.LostUser.Equals(u) && u.Status == EmployeeStatus.Active ? (IAccount)ToAccount(tenantId, u) : ASC.Core.Configuration.Constants.Guest; } - private IUserAccount ToAccount(UserInfo u) + private IUserAccount ToAccount(int tenantId, UserInfo u) { - return new UserAccount(u, CoreContext.TenantManager.GetCurrentTenant().TenantId); + return new UserAccount(u, tenantId); } } } \ No newline at end of file diff --git a/common/ASC.Core.Common/Context/Impl/UserManager.cs b/common/ASC.Core.Common/Context/Impl/UserManager.cs index 874a46f625..dab7bd911a 100644 --- a/common/ASC.Core.Common/Context/Impl/UserManager.cs +++ b/common/ASC.Core.Common/Context/Impl/UserManager.cs @@ -134,9 +134,9 @@ namespace ASC.Core public UserInfo GetUsers(Guid id) { - return GetUsers(id, CoreContext.TenantManager.GetCurrentTenant().TenantId); + return GetUsers(CoreContext.TenantManager.GetCurrentTenant().TenantId, id); } - public UserInfo GetUsers(Guid id, int tenantId) + public UserInfo GetUsers(int tenantId, Guid id) { if (IsSystemUser(id)) return systemUsers[id]; var u = userService.GetUser(tenantId, id); @@ -149,9 +149,9 @@ namespace ASC.Core return u != null && !u.Removed ? u : Constants.LostUser; } - public bool UserExists(Guid id, int tenantId) + public bool UserExists(int tenantId, Guid id) { - return !GetUsers(id, tenantId).Equals(Constants.LostUser); + return !GetUsers(tenantId, id).Equals(Constants.LostUser); } public bool IsSystemUser(Guid id) @@ -255,22 +255,22 @@ namespace ASC.Core public IEnumerable GetUserGroupsId(int tenantId, Guid id) { - return GetUsers(id, tenantId).GetUserGroupsId(tenantId); + return GetUsers(tenantId, id).GetUserGroupsId(tenantId); } public GroupInfo[] GetUserGroups(Tenant tenant, Guid id) { - return GetUsers(id, tenant.TenantId).GetGroups(tenant, IncludeType.Distinct, Guid.Empty); + return GetUsers(tenant.TenantId, id).GetGroups(tenant, IncludeType.Distinct, Guid.Empty); } public GroupInfo[] GetUserGroups(Tenant tenant, Guid id, Guid categoryID) { - return GetUsers(id, tenant.TenantId).GetGroups(tenant, IncludeType.Distinct, categoryID); + return GetUsers(tenant.TenantId, id).GetGroups(tenant, IncludeType.Distinct, categoryID); } public GroupInfo[] GetUserGroups(Tenant tenant, Guid userID, IncludeType includeType) { - return GetUsers(userID, tenant.TenantId).GetGroups(tenant, includeType, null); + return GetUsers(tenant.TenantId, userID).GetGroups(tenant, includeType, null); } internal GroupInfo[] GetUserGroups(Tenant tenant, Guid userID, IncludeType includeType, Guid? categoryId) @@ -352,7 +352,7 @@ namespace ASC.Core userService.SaveUserGroupRef(tenant.TenantId, new UserGroupRef(userId, groupId, UserGroupRefType.Contains)); - GetUsers(userId).ResetGroupCache(); + GetUsers(tenant.TenantId, userId).ResetGroupCache(); } public void RemoveUserFromGroup(Tenant tenant, Guid userId, Guid groupId) @@ -362,7 +362,7 @@ namespace ASC.Core userService.RemoveUserGroupRef(tenant.TenantId, userId, groupId, UserGroupRefType.Contains); - GetUsers(userId).ResetGroupCache(); + GetUsers(tenant.TenantId, userId).ResetGroupCache(); } #endregion Users @@ -404,7 +404,7 @@ namespace ASC.Core public UserInfo GetCompanyCEO(int tenantId) { var id = GetDepartmentManager(tenantId, Guid.Empty); - return id != Guid.Empty ? GetUsers(id) : null; + return id != Guid.Empty ? GetUsers(tenantId, id) : null; } public void SetCompanyCEO(int tenantId, Guid userId) diff --git a/common/ASC.Core.Common/Context/SecurityContext.cs b/common/ASC.Core.Common/Context/SecurityContext.cs index cfea4da51c..d4c33b18e9 100644 --- a/common/ASC.Core.Common/Context/SecurityContext.cs +++ b/common/ASC.Core.Common/Context/SecurityContext.cs @@ -189,7 +189,9 @@ namespace ASC.Core if (account is IUserAccount) { - var u = CoreContext.UserManager.GetUsers(account.ID); + var tenant = CoreContext.TenantManager.GetCurrentTenant(); + + var u = CoreContext.UserManager.GetUsers(tenant.TenantId, account.ID); if (u.ID == Users.Constants.LostUser.ID) { @@ -199,7 +201,7 @@ namespace ASC.Core { throw new SecurityException("Account disabled."); } - var tenant = CoreContext.TenantManager.GetCurrentTenant(); + // for LDAP users only if (u.Sid != null) { @@ -223,9 +225,9 @@ namespace ASC.Core return cookie; } - public static string AuthenticateMe(Guid userId) + public static string AuthenticateMe(int tenantId, Guid userId) { - return AuthenticateMe(CoreContext.Authentication.GetAccountByID(userId)); + return AuthenticateMe(CoreContext.Authentication.GetAccountByID(tenantId, userId)); } public static void Logout() @@ -233,9 +235,9 @@ namespace ASC.Core Principal = null; } - public static void SetUserPassword(Guid userID, string password) + public static void SetUserPassword(int tenantId, Guid userID, string password) { - CoreContext.Authentication.SetUserPassword(userID, password); + CoreContext.Authentication.SetUserPassword(tenantId, userID, password); } diff --git a/common/ASC.Core.Common/Notify/Engine/NotifyEngine.cs b/common/ASC.Core.Common/Notify/Engine/NotifyEngine.cs index f7e3cdd451..a60c52395c 100644 --- a/common/ASC.Core.Common/Notify/Engine/NotifyEngine.cs +++ b/common/ASC.Core.Common/Notify/Engine/NotifyEngine.cs @@ -431,7 +431,7 @@ namespace ASC.Notify.Engine var addresses = recipient.Addresses; if (addresses == null || !addresses.Any()) { - addresses = recipientProvider.GetRecipientAddresses(request.Recipient as IDirectRecipient, sender); + addresses = recipientProvider.GetRecipientAddresses(tenantId, request.Recipient as IDirectRecipient, sender); recipient = new DirectRecipient(request.Recipient.ID, request.Recipient.Name, addresses); } diff --git a/common/ASC.Core.Common/Notify/IRecipientsProvider.cs b/common/ASC.Core.Common/Notify/IRecipientsProvider.cs index 82ae2fff75..2f439746f0 100644 --- a/common/ASC.Core.Common/Notify/IRecipientsProvider.cs +++ b/common/ASC.Core.Common/Notify/IRecipientsProvider.cs @@ -36,7 +36,7 @@ namespace ASC.Notify.Recipients IRecipientsGroup[] GetGroups(Tenant tenant, IRecipient recipient); - string[] GetRecipientAddresses(IDirectRecipient recipient, string senderName); + string[] GetRecipientAddresses(int tenantId, IDirectRecipient recipient, string senderName); IDirectRecipient FilterRecipientAddresses(int tenantId, IDirectRecipient recipient); } diff --git a/common/ASC.Core.Common/Notify/Jabber/JabberServiceClient.cs b/common/ASC.Core.Common/Notify/Jabber/JabberServiceClient.cs index 676aa98802..c01c87b496 100644 --- a/common/ASC.Core.Common/Notify/Jabber/JabberServiceClient.cs +++ b/common/ASC.Core.Common/Notify/Jabber/JabberServiceClient.cs @@ -217,7 +217,7 @@ namespace ASC.Core.Notify.Jabber private static string GetCurrentUserName() { - return CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).UserName; + return CoreContext.UserManager.GetUsers(GetCurrentTenantId(), SecurityContext.CurrentAccount.ID).UserName; } private static void ProcessError(Exception error) diff --git a/common/ASC.Core.Common/Notify/RecipientProviderImpl.cs b/common/ASC.Core.Common/Notify/RecipientProviderImpl.cs index 59318a34bd..f8d69f6db3 100644 --- a/common/ASC.Core.Common/Notify/RecipientProviderImpl.cs +++ b/common/ASC.Core.Common/Notify/RecipientProviderImpl.cs @@ -41,7 +41,7 @@ namespace ASC.Core.Notify var recID = Guid.Empty; if (TryParseGuid(id, out recID)) { - var user = CoreContext.UserManager.GetUsers(recID); + var user = CoreContext.UserManager.GetUsers(tenantId, recID); if (user.ID != Constants.LostUser.ID) return new DirectRecipient(user.ID.ToString(), user.ToString()); var group = CoreContext.UserManager.GetGroupInfo(tenantId, recID); @@ -96,14 +96,14 @@ namespace ASC.Core.Notify return result.ToArray(); } - public virtual string[] GetRecipientAddresses(IDirectRecipient recipient, string senderName) + public virtual string[] GetRecipientAddresses(int tenantId, IDirectRecipient recipient, string senderName) { if (recipient == null) throw new ArgumentNullException("recipient"); Guid userID; if (TryParseGuid(recipient.ID, out userID)) { - var user = CoreContext.UserManager.GetUsers(userID); + var user = CoreContext.UserManager.GetUsers(tenantId, userID); if (user.ID != Constants.LostUser.ID) { if (senderName == ASC.Core.Configuration.Constants.NotifyEMailSenderSysName) return new[] {user.Email}; diff --git a/common/ASC.Core.Common/Tests/UserManagerTest.cs b/common/ASC.Core.Common/Tests/UserManagerTest.cs index 91eb8c1537..e58aede3b6 100644 --- a/common/ASC.Core.Common/Tests/UserManagerTest.cs +++ b/common/ASC.Core.Common/Tests/UserManagerTest.cs @@ -109,7 +109,7 @@ namespace ASC.Core.Common.Tests Assert.IsNotNull(groups); foreach (var g in CoreContext.UserManager.GetUserGroups(tenant, u.ID)) { - var manager = CoreContext.UserManager.GetUsers(CoreContext.UserManager.GetDepartmentManager(tenant.TenantId, g.ID), tenant.TenantId).UserName; + var manager = CoreContext.UserManager.GetUsers(tenant.TenantId, CoreContext.UserManager.GetDepartmentManager(tenant.TenantId, g.ID)).UserName; } } var stopwatch = Stopwatch.StartNew(); @@ -119,7 +119,7 @@ namespace ASC.Core.Common.Tests Assert.IsNotNull(groups); foreach (var g in CoreContext.UserManager.GetUserGroups(tenant, u.ID)) { - var manager = CoreContext.UserManager.GetUsers(CoreContext.UserManager.GetDepartmentManager(tenant.TenantId, g.ID), tenant.TenantId).UserName; + var manager = CoreContext.UserManager.GetUsers(tenant.TenantId, CoreContext.UserManager.GetDepartmentManager(tenant.TenantId, g.ID)).UserName; } } stopwatch.Stop(); diff --git a/common/ASC.Data.Reassigns/ReassignProgressItem.cs b/common/ASC.Data.Reassigns/ReassignProgressItem.cs index 80b9747777..0b1e148797 100644 --- a/common/ASC.Data.Reassigns/ReassignProgressItem.cs +++ b/common/ASC.Data.Reassigns/ReassignProgressItem.cs @@ -104,7 +104,7 @@ namespace ASC.Data.Reassigns Status = ProgressStatus.Started; var tenant = CoreContext.TenantManager.SetCurrentTenant(_tenantId); - SecurityContext.AuthenticateMe(_currentUserId); + SecurityContext.AuthenticateMe(_tenantId, _currentUserId); logger.InfoFormat("reassignment of data from {0} to {1}", _fromUserId, _toUserId); @@ -164,8 +164,8 @@ namespace ASC.Data.Reassigns private void SendSuccessNotify() { - var fromUser = CoreContext.UserManager.GetUsers(_fromUserId); - var toUser = CoreContext.UserManager.GetUsers(_toUserId); + var fromUser = CoreContext.UserManager.GetUsers(_tenantId, _fromUserId); + var toUser = CoreContext.UserManager.GetUsers(_tenantId, _toUserId); StudioNotifyService.SendMsgReassignsCompleted(_tenantId, _currentUserId, fromUser, toUser); @@ -180,15 +180,15 @@ namespace ASC.Data.Reassigns private void SendErrorNotify(string errorMessage) { - var fromUser = CoreContext.UserManager.GetUsers(_fromUserId); - var toUser = CoreContext.UserManager.GetUsers(_toUserId); + var fromUser = CoreContext.UserManager.GetUsers(_tenantId, _fromUserId); + var toUser = CoreContext.UserManager.GetUsers(_tenantId, _toUserId); StudioNotifyService.SendMsgReassignsFailed(_tenantId, _currentUserId, fromUser, toUser, errorMessage); } private void DeleteUserProfile(Tenant tenant) { - var user = CoreContext.UserManager.GetUsers(_fromUserId); + var user = CoreContext.UserManager.GetUsers(_tenantId, _fromUserId); var userName = user.DisplayUserName(false); UserPhotoManager.RemovePhoto(tenant, user.ID); diff --git a/common/ASC.Data.Reassigns/RemoveProgressItem.cs b/common/ASC.Data.Reassigns/RemoveProgressItem.cs index 8ffcb481de..eb19563fb7 100644 --- a/common/ASC.Data.Reassigns/RemoveProgressItem.cs +++ b/common/ASC.Data.Reassigns/RemoveProgressItem.cs @@ -106,7 +106,7 @@ namespace ASC.Data.Reassigns Status = ProgressStatus.Started; var tenant = CoreContext.TenantManager.SetCurrentTenant(_tenantId); - SecurityContext.AuthenticateMe(_currentUserId); + SecurityContext.AuthenticateMe(_tenantId, _currentUserId); long docsSpace, crmSpace, mailSpace, talkSpace; GetUsageSpace(tenant, out docsSpace, out mailSpace, out talkSpace); diff --git a/common/ASC.Data.Storage/StaticUploader.cs b/common/ASC.Data.Storage/StaticUploader.cs index 4bfdea490d..7edbcc9ee6 100644 --- a/common/ASC.Data.Storage/StaticUploader.cs +++ b/common/ASC.Data.Storage/StaticUploader.cs @@ -185,7 +185,7 @@ namespace ASC.Data.Storage { var tenant = CoreContext.TenantManager.GetTenant(tenantId); CoreContext.TenantManager.SetCurrentTenant(tenant); - SecurityContext.AuthenticateMe(tenant.OwnerId); + SecurityContext.AuthenticateMe(tenant.TenantId, tenant.OwnerId); var dataStore = CdnStorageSettings.Load().DataStore; diff --git a/common/ASC.Data.Storage/StorageUploader.cs b/common/ASC.Data.Storage/StorageUploader.cs index 3ce45d427d..31242612a7 100644 --- a/common/ASC.Data.Storage/StorageUploader.cs +++ b/common/ASC.Data.Storage/StorageUploader.cs @@ -135,7 +135,7 @@ namespace ASC.Data.Storage Log.DebugFormat("Tenant: {0}", tenantId); var tenant = CoreContext.TenantManager.GetTenant(tenantId); CoreContext.TenantManager.SetCurrentTenant(tenant); - SecurityContext.AuthenticateMe(tenant.OwnerId); + SecurityContext.AuthenticateMe(tenant.TenantId, tenant.OwnerId); foreach (var module in Modules) { diff --git a/common/ASC.FederatedLogin/LoginProviders/BlockchainLoginProvider.cs b/common/ASC.FederatedLogin/LoginProviders/BlockchainLoginProvider.cs index e7473ae302..669e1005e8 100644 --- a/common/ASC.FederatedLogin/LoginProviders/BlockchainLoginProvider.cs +++ b/common/ASC.FederatedLogin/LoginProviders/BlockchainLoginProvider.cs @@ -40,7 +40,7 @@ namespace ASC.Web.Studio.Core public static void UpdateData(string account) { var tenant = CoreContext.TenantManager.GetCurrentTenant(); - var user = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID, tenant.TenantId); + var user = CoreContext.UserManager.GetUsers(tenant.TenantId, SecurityContext.CurrentAccount.ID); if (!SecurityContext.IsAuthenticated || user.IsVisitor(tenant)) throw new SecurityException(); var loginProfile = new LoginProfile diff --git a/common/ASC.VoipService/Twilio/TwilioResponseHelper.cs b/common/ASC.VoipService/Twilio/TwilioResponseHelper.cs index c420a30e5d..06ebc4209d 100644 --- a/common/ASC.VoipService/Twilio/TwilioResponseHelper.cs +++ b/common/ASC.VoipService/Twilio/TwilioResponseHelper.cs @@ -151,7 +151,7 @@ namespace ASC.VoipService.Twilio if (Guid.TryParse(to, out newCallerId)) { - SecurityContext.AuthenticateMe(newCallerId); + SecurityContext.AuthenticateMe(CoreContext.TenantManager.GetCurrentTenant().TenantId, newCallerId); } return new VoiceResponse().Enqueue(settings.Queue.Name, GetEcho("enqueue"), "POST", diff --git a/products/ASC.People/Server/Controllers/GroupController.cs b/products/ASC.People/Server/Controllers/GroupController.cs index ee6440aef9..e32811b399 100644 --- a/products/ASC.People/Server/Controllers/GroupController.cs +++ b/products/ASC.People/Server/Controllers/GroupController.cs @@ -5,6 +5,7 @@ using ASC.Api.Core; using ASC.Api.Utils; using ASC.Common.Web; using ASC.Core; +using ASC.Core.Tenants; using ASC.Core.Users; using ASC.MessagingSystem; using ASC.Web.Api.Models; @@ -20,6 +21,7 @@ namespace ASC.Employee.Core.Controllers { public Common.Logging.LogManager LogManager { get; } public ApiContext ApiContext { get; } + public Tenant Tenant { get { return ApiContext.Tenant; } } public MessageService MessageService { get; } public GroupController(Common.Logging.LogManager logManager, MessageService messageService, ApiContext apiContext) @@ -32,7 +34,7 @@ namespace ASC.Employee.Core.Controllers [Read] public IEnumerable GetAll() { - return CoreContext.UserManager.GetDepartments(ApiContext.Tenant.TenantId).Select(x => new GroupWrapperSummary(x, ApiContext)); + return CoreContext.UserManager.GetDepartments(Tenant.TenantId).Select(x => new GroupWrapperSummary(x, ApiContext)); } [Read("{groupid}")] @@ -44,15 +46,15 @@ namespace ASC.Employee.Core.Controllers [Read("user/{userid}")] public IEnumerable GetByUserId(Guid userid) { - return CoreContext.UserManager.GetUserGroups(ApiContext.Tenant, userid).Select(x => new GroupWrapperSummary(x, ApiContext)); + return CoreContext.UserManager.GetUserGroups(Tenant, userid).Select(x => new GroupWrapperSummary(x, ApiContext)); } [Create] public GroupWrapperFull AddGroup(Guid groupManager, string groupName, IEnumerable members) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditGroups, Constants.Action_AddRemoveUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditGroups, Constants.Action_AddRemoveUser); - var group = CoreContext.UserManager.SaveGroupInfo(ApiContext.Tenant, new GroupInfo { Name = groupName }); + var group = CoreContext.UserManager.SaveGroupInfo(Tenant, new GroupInfo { Name = groupName }); TransferUserToDepartment(groupManager, @group, true); if (members != null) @@ -71,17 +73,17 @@ namespace ASC.Employee.Core.Controllers [Update("{groupid}")] public GroupWrapperFull UpdateGroup(Guid groupid, Guid groupManager, string groupName, IEnumerable members) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditGroups, Constants.Action_AddRemoveUser); - var group = CoreContext.UserManager.GetGroups(ApiContext.Tenant.TenantId).SingleOrDefault(x => x.ID == groupid).NotFoundIfNull("group not found"); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditGroups, Constants.Action_AddRemoveUser); + var group = CoreContext.UserManager.GetGroups(Tenant.TenantId).SingleOrDefault(x => x.ID == groupid).NotFoundIfNull("group not found"); if (group.ID == Constants.LostGroupInfo.ID) { throw new ItemNotFoundException("group not found"); } group.Name = groupName ?? group.Name; - CoreContext.UserManager.SaveGroupInfo(ApiContext.Tenant, group); + CoreContext.UserManager.SaveGroupInfo(Tenant, group); - RemoveMembersFrom(groupid, CoreContext.UserManager.GetUsersByGroup(ApiContext.Tenant, groupid, EmployeeStatus.All).Select(u => u.ID).Where(id => !members.Contains(id))); + RemoveMembersFrom(groupid, CoreContext.UserManager.GetUsersByGroup(Tenant, groupid, EmployeeStatus.All).Select(u => u.ID).Where(id => !members.Contains(id))); TransferUserToDepartment(groupManager, @group, true); if (members != null) @@ -100,11 +102,11 @@ namespace ASC.Employee.Core.Controllers [Delete("{groupid}")] public GroupWrapperFull DeleteGroup(Guid groupid) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditGroups, Constants.Action_AddRemoveUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditGroups, Constants.Action_AddRemoveUser); var @group = GetGroupInfo(groupid); var groupWrapperFull = new GroupWrapperFull(group, false, ApiContext); - CoreContext.UserManager.DeleteGroup(ApiContext.Tenant, groupid); + CoreContext.UserManager.DeleteGroup(Tenant, groupid); MessageService.Send(MessageAction.GroupDeleted, MessageTarget.Create(group.ID), group.Name); @@ -113,7 +115,7 @@ namespace ASC.Employee.Core.Controllers private GroupInfo GetGroupInfo(Guid groupid) { - var group = CoreContext.UserManager.GetGroups(ApiContext.Tenant.TenantId).SingleOrDefault(x => x.ID == groupid).NotFoundIfNull("group not found"); + var group = CoreContext.UserManager.GetGroups(Tenant.TenantId).SingleOrDefault(x => x.ID == groupid).NotFoundIfNull("group not found"); if (group.ID == Constants.LostGroupInfo.ID) throw new ItemNotFoundException("group not found"); return @group; @@ -122,12 +124,12 @@ namespace ASC.Employee.Core.Controllers [Update("{groupid}/members/{newgroupid}")] public GroupWrapperFull TransferMembersTo(Guid groupid, Guid newgroupid) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditGroups, Constants.Action_AddRemoveUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditGroups, Constants.Action_AddRemoveUser); var oldgroup = GetGroupInfo(groupid); var newgroup = GetGroupInfo(newgroupid); - var users = CoreContext.UserManager.GetUsersByGroup(ApiContext.Tenant, oldgroup.ID); + var users = CoreContext.UserManager.GetUsersByGroup(Tenant, oldgroup.ID); foreach (var userInfo in users) { TransferUserToDepartment(userInfo.ID, newgroup, false); @@ -138,7 +140,7 @@ namespace ASC.Employee.Core.Controllers [Create("{groupid}/members")] public GroupWrapperFull SetMembersTo(Guid groupid, IEnumerable members) { - RemoveMembersFrom(groupid, CoreContext.UserManager.GetUsersByGroup(ApiContext.Tenant, groupid).Select(x => x.ID)); + RemoveMembersFrom(groupid, CoreContext.UserManager.GetUsersByGroup(Tenant, groupid).Select(x => x.ID)); AddMembersTo(groupid, members); return GetById(groupid); } @@ -146,7 +148,7 @@ namespace ASC.Employee.Core.Controllers [Update("{groupid}/members")] public GroupWrapperFull AddMembersTo(Guid groupid, IEnumerable members) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditGroups, Constants.Action_AddRemoveUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditGroups, Constants.Action_AddRemoveUser); var group = GetGroupInfo(groupid); foreach (var userId in members) @@ -160,9 +162,9 @@ namespace ASC.Employee.Core.Controllers public GroupWrapperFull SetManager(Guid groupid, Guid userid) { var group = GetGroupInfo(groupid); - if (CoreContext.UserManager.UserExists(userid, ApiContext.Tenant.TenantId)) + if (CoreContext.UserManager.UserExists(Tenant.TenantId, userid)) { - CoreContext.UserManager.SetDepartmentManager(ApiContext.Tenant.TenantId, group.ID, userid); + CoreContext.UserManager.SetDepartmentManager(Tenant.TenantId, group.ID, userid); } else { @@ -174,7 +176,7 @@ namespace ASC.Employee.Core.Controllers [Delete("{groupid}/members")] public GroupWrapperFull RemoveMembersFrom(Guid groupid, IEnumerable members) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditGroups, Constants.Action_AddRemoveUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditGroups, Constants.Action_AddRemoveUser); var group = GetGroupInfo(groupid); foreach (var userId in members) @@ -186,22 +188,22 @@ namespace ASC.Employee.Core.Controllers private void RemoveUserFromDepartment(Guid userId, GroupInfo @group) { - if (!CoreContext.UserManager.UserExists(userId, ApiContext.Tenant.TenantId)) return; + if (!CoreContext.UserManager.UserExists(Tenant.TenantId, userId)) return; - var user = CoreContext.UserManager.GetUsers(userId, ApiContext.Tenant.TenantId); - CoreContext.UserManager.RemoveUserFromGroup(ApiContext.Tenant, user.ID, @group.ID); - CoreContext.UserManager.SaveUserInfo(ApiContext.Tenant, user); + var user = CoreContext.UserManager.GetUsers(Tenant.TenantId, userId); + CoreContext.UserManager.RemoveUserFromGroup(Tenant, user.ID, @group.ID); + CoreContext.UserManager.SaveUserInfo(Tenant, user); } private void TransferUserToDepartment(Guid userId, GroupInfo group, bool setAsManager) { - if (!CoreContext.UserManager.UserExists(userId, ApiContext.Tenant.TenantId) && userId != Guid.Empty) return; + if (!CoreContext.UserManager.UserExists(Tenant.TenantId, userId) && userId != Guid.Empty) return; if (setAsManager) { - CoreContext.UserManager.SetDepartmentManager(ApiContext.Tenant.TenantId, @group.ID, userId); + CoreContext.UserManager.SetDepartmentManager(Tenant.TenantId, @group.ID, userId); } - CoreContext.UserManager.AddUserIntoGroup(ApiContext.Tenant, userId, @group.ID); + CoreContext.UserManager.AddUserIntoGroup(Tenant, userId, @group.ID); } } } \ No newline at end of file diff --git a/products/ASC.People/Server/Controllers/PeopleController.cs b/products/ASC.People/Server/Controllers/PeopleController.cs index eb3fd4fe0e..f93e9ffd10 100644 --- a/products/ASC.People/Server/Controllers/PeopleController.cs +++ b/products/ASC.People/Server/Controllers/PeopleController.cs @@ -43,6 +43,7 @@ namespace ASC.Employee.Core.Controllers public class PeopleController : ControllerBase { public Common.Logging.LogManager LogManager { get; } + public Tenant Tenant { get { return ApiContext.Tenant; } } public ApiContext ApiContext { get; } public MessageService MessageService { get; } @@ -86,12 +87,12 @@ namespace ASC.Employee.Core.Controllers public IEnumerable GetByStatus(EmployeeStatus status) { if (CoreContext.Configuration.Personal) throw new Exception("Method not available"); - var query = CoreContext.UserManager.GetUsers(ApiContext.Tenant, status).AsEnumerable(); + var query = CoreContext.UserManager.GetUsers(Tenant, status).AsEnumerable(); if ("group".Equals(ApiContext.FilterBy, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrEmpty(ApiContext.FilterValue)) { var groupId = new Guid(ApiContext.FilterValue); //Filter by group - query = query.Where(x => CoreContext.UserManager.IsUserInGroup(ApiContext.Tenant, x.ID, groupId)); + query = query.Where(x => CoreContext.UserManager.IsUserInGroup(Tenant, x.ID, groupId)); ApiContext.SetDataFiltered(); } return query.Select(x => new EmployeeWraperFull(x, ApiContext)); @@ -100,15 +101,15 @@ namespace ASC.Employee.Core.Controllers [Read("@self")] public EmployeeWraper Self() { - return new EmployeeWraperFull(CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID), ApiContext); + return new EmployeeWraperFull(CoreContext.UserManager.GetUsers(Tenant.TenantId, SecurityContext.CurrentAccount.ID), ApiContext); } [Read("email")] public EmployeeWraperFull GetByEmail([FromQuery]string email) { - if (CoreContext.Configuration.Personal && !CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).IsOwner(ApiContext.Tenant)) + if (CoreContext.Configuration.Personal && !CoreContext.UserManager.GetUsers(Tenant.TenantId, SecurityContext.CurrentAccount.ID).IsOwner(Tenant)) throw new MethodAccessException("Method not available"); - var user = CoreContext.UserManager.GetUserByEmail(ApiContext.Tenant.TenantId, email); + var user = CoreContext.UserManager.GetUserByEmail(Tenant.TenantId, email); if (user.ID == Constants.LostUser.ID) { throw new ItemNotFoundException("User not found"); @@ -121,12 +122,12 @@ namespace ASC.Employee.Core.Controllers public EmployeeWraperFull GetById(string username) { if (CoreContext.Configuration.Personal) throw new MethodAccessException("Method not available"); - var user = CoreContext.UserManager.GetUserByUserName(ApiContext.Tenant.TenantId, username); + var user = CoreContext.UserManager.GetUserByUserName(Tenant.TenantId, username); if (user.ID == Constants.LostUser.ID) { if (Guid.TryParse(username, out var userId)) { - user = CoreContext.UserManager.GetUsers(userId); + user = CoreContext.UserManager.GetUsers(Tenant.TenantId, userId); } else { @@ -154,7 +155,7 @@ namespace ASC.Employee.Core.Controllers groupId = new Guid(ApiContext.FilterValue); } - return CoreContext.UserManager.Search(ApiContext.Tenant, query, EmployeeStatus.Active, groupId).Select(x => new EmployeeWraperFull(x, ApiContext)); + return CoreContext.UserManager.Search(Tenant, query, EmployeeStatus.Active, groupId).Select(x => new EmployeeWraperFull(x, ApiContext)); } catch (Exception error) { @@ -175,13 +176,13 @@ namespace ASC.Employee.Core.Controllers if (CoreContext.Configuration.Personal) throw new MethodAccessException("Method not available"); try { - var list = CoreContext.UserManager.GetUsers(ApiContext.Tenant, status).AsEnumerable(); + var list = CoreContext.UserManager.GetUsers(Tenant, status).AsEnumerable(); if ("group".Equals(ApiContext.FilterBy, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrEmpty(ApiContext.FilterValue)) { var groupId = new Guid(ApiContext.FilterValue); //Filter by group - list = list.Where(x => CoreContext.UserManager.IsUserInGroup(ApiContext.Tenant, x.ID, groupId)); + list = list.Where(x => CoreContext.UserManager.IsUserInGroup(Tenant, x.ID, groupId)); ApiContext.SetDataFiltered(); } @@ -269,8 +270,8 @@ namespace ASC.Employee.Core.Controllers private IEnumerable GetByFilter(EmployeeStatus? employeeStatus, Guid? groupId, EmployeeActivationStatus? activationStatus, EmployeeType? employeeType, bool? isAdministrator) { if (CoreContext.Configuration.Personal) throw new MethodAccessException("Method not available"); - var isAdmin = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).IsAdmin(ApiContext.Tenant) || - WebItemSecurity.IsProductAdministrator(ApiContext.Tenant, WebItemManager.PeopleProductID, SecurityContext.CurrentAccount.ID); + var isAdmin = CoreContext.UserManager.GetUsers(Tenant.TenantId, SecurityContext.CurrentAccount.ID).IsAdmin(Tenant) || + WebItemSecurity.IsProductAdministrator(Tenant, WebItemManager.PeopleProductID, SecurityContext.CurrentAccount.ID); var includeGroups = new List>(); if (groupId.HasValue) @@ -306,7 +307,7 @@ namespace ASC.Employee.Core.Controllers includeGroups.Add(adminGroups); } - var users = CoreContext.UserManager.GetUsers(ApiContext.Tenant.TenantId, isAdmin, employeeStatus, includeGroups, excludeGroups, activationStatus, ApiContext.FilterValue, ApiContext.SortBy, !ApiContext.SortDescending, ApiContext.Count - 1, ApiContext.StartIndex, out int total); + var users = CoreContext.UserManager.GetUsers(Tenant.TenantId, isAdmin, employeeStatus, includeGroups, excludeGroups, activationStatus, ApiContext.FilterValue, ApiContext.SortBy, !ApiContext.SortDescending, ApiContext.Count - 1, ApiContext.StartIndex, out int total); ApiContext.SetTotalCount(total); @@ -316,7 +317,7 @@ namespace ASC.Employee.Core.Controllers [Create] public EmployeeWraperFull AddMember(MemberModel memberModel) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_AddRemoveUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_AddRemoveUser); if (string.IsNullOrEmpty(memberModel.Password)) memberModel.Password = UserManagerWrapper.GeneratePassword(); @@ -343,7 +344,7 @@ namespace ASC.Employee.Core.Controllers UpdateContacts(memberModel.Contacts, user); - user = UserManagerWrapper.AddUser(ApiContext.Tenant, user, memberModel.Password, false, true, memberModel.IsVisitor); + user = UserManagerWrapper.AddUser(Tenant, user, memberModel.Password, false, true, memberModel.IsVisitor); var messageAction = memberModel.IsVisitor ? MessageAction.GuestCreated : MessageAction.UserCreated; MessageService.Send(messageAction, MessageTarget.Create(user.ID), user.DisplayUserName(false)); @@ -361,7 +362,7 @@ namespace ASC.Employee.Core.Controllers [Create("active")] public EmployeeWraperFull AddMemberAsActivated(MemberModel memberModel) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_AddRemoveUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_AddRemoveUser); var user = new UserInfo(); @@ -386,7 +387,7 @@ namespace ASC.Employee.Core.Controllers UpdateContacts(memberModel.Contacts, user); - user = UserManagerWrapper.AddUser(ApiContext.Tenant, user, memberModel.Password, false, false, memberModel.IsVisitor); + user = UserManagerWrapper.AddUser(Tenant, user, memberModel.Password, false, false, memberModel.IsVisitor); user.ActivationStatus = EmployeeActivationStatus.Activated; @@ -408,7 +409,7 @@ namespace ASC.Employee.Core.Controllers if (CoreContext.UserManager.IsSystemUser(user.ID)) throw new SecurityException(); - SecurityContext.DemandPermissions(ApiContext.Tenant, new UserSecurityProvider(user.ID), Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, new UserSecurityProvider(user.ID), Constants.Action_EditUser); var self = SecurityContext.CurrentAccount.ID.Equals(user.ID); var resetDate = new DateTime(1900, 01, 01); @@ -417,7 +418,7 @@ namespace ASC.Employee.Core.Controllers var isLdap = user.IsLDAP(); var isSso = user.IsSSO(); - var isAdmin = WebItemSecurity.IsProductAdministrator(ApiContext.Tenant, WebItemManager.PeopleProductID, SecurityContext.CurrentAccount.ID); + var isAdmin = WebItemSecurity.IsProductAdministrator(Tenant, WebItemManager.PeopleProductID, SecurityContext.CurrentAccount.ID); if (!isLdap && !isSso) { @@ -459,7 +460,7 @@ namespace ASC.Employee.Core.Controllers UpdateContacts(memberModel.Contacts, user); UpdateDepartments(memberModel.Department, user); - if (memberModel.Files != UserPhotoManager.GetPhotoAbsoluteWebPath(ApiContext.Tenant, user.ID)) + if (memberModel.Files != UserPhotoManager.GetPhotoAbsoluteWebPath(Tenant, user.ID)) { UpdatePhotoUrl(memberModel.Files, user); } @@ -471,24 +472,24 @@ namespace ASC.Employee.Core.Controllers if (self && !isAdmin) { - StudioNotifyService.SendMsgToAdminAboutProfileUpdated(ApiContext.Tenant.TenantId); + StudioNotifyService.SendMsgToAdminAboutProfileUpdated(Tenant.TenantId); } // change user type - var canBeGuestFlag = !user.IsOwner(ApiContext.Tenant) && !user.IsAdmin(ApiContext.Tenant) && !user.GetListAdminModules(ApiContext.Tenant).Any() && !user.IsMe(); + var canBeGuestFlag = !user.IsOwner(Tenant) && !user.IsAdmin(Tenant) && !user.GetListAdminModules(Tenant).Any() && !user.IsMe(); - if (memberModel.IsVisitor && !user.IsVisitor(ApiContext.Tenant) && canBeGuestFlag) + if (memberModel.IsVisitor && !user.IsVisitor(Tenant) && canBeGuestFlag) { - CoreContext.UserManager.AddUserIntoGroup(ApiContext.Tenant, user.ID, Constants.GroupVisitor.ID); + CoreContext.UserManager.AddUserIntoGroup(Tenant, user.ID, Constants.GroupVisitor.ID); WebItemSecurity.ClearCache(); } - if (!self && !memberModel.IsVisitor && user.IsVisitor(ApiContext.Tenant)) + if (!self && !memberModel.IsVisitor && user.IsVisitor(Tenant)) { var usersQuota = TenantExtra.GetTenantQuota().ActiveUsers; - if (TenantStatisticsProvider.GetUsersCount(ApiContext.Tenant) < usersQuota) + if (TenantStatisticsProvider.GetUsersCount(Tenant) < usersQuota) { - CoreContext.UserManager.RemoveUserFromGroup(ApiContext.Tenant, user.ID, Constants.GroupVisitor.ID); + CoreContext.UserManager.RemoveUserFromGroup(Tenant, user.ID, Constants.GroupVisitor.ID); WebItemSecurity.ClearCache(); } else @@ -497,12 +498,12 @@ namespace ASC.Employee.Core.Controllers } } - CoreContext.UserManager.SaveUserInfo(ApiContext.Tenant, user, memberModel.IsVisitor); + CoreContext.UserManager.SaveUserInfo(Tenant, user, memberModel.IsVisitor); MessageService.Send(MessageAction.UserUpdated, MessageTarget.Create(user.ID), user.DisplayUserName(false)); if (memberModel.Disable.HasValue && memberModel.Disable.Value) { - HttpContext.ResetUserCookie(user.ID); + HttpContext.ResetUserCookie(Tenant.TenantId, user.ID); MessageService.Send(MessageAction.CookieSettingsUpdated); } @@ -512,7 +513,7 @@ namespace ASC.Employee.Core.Controllers [Delete("{userid}")] public EmployeeWraperFull DeleteMember(string userid) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_AddRemoveUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_AddRemoveUser); var user = GetUserInfo(userid); @@ -526,8 +527,8 @@ namespace ASC.Employee.Core.Controllers var userName = user.DisplayUserName(false); - UserPhotoManager.RemovePhoto(ApiContext.Tenant, user.ID); - CoreContext.UserManager.DeleteUser(ApiContext.Tenant, user.ID); + UserPhotoManager.RemovePhoto(Tenant, user.ID); + CoreContext.UserManager.DeleteUser(Tenant, user.ID); QueueWorkerRemove.Start(TenantProvider.CurrentTenantID, user, SecurityContext.CurrentAccount.ID, false); MessageService.Send(MessageAction.UserDeleted, MessageTarget.Create(user.ID), userName); @@ -544,7 +545,7 @@ namespace ASC.Employee.Core.Controllers throw new SecurityException(); UpdateContacts(memberModel.Contacts, user); - CoreContext.UserManager.SaveUserInfo(ApiContext.Tenant, user); + CoreContext.UserManager.SaveUserInfo(Tenant, user); return new EmployeeWraperFull(user, ApiContext); } @@ -558,7 +559,7 @@ namespace ASC.Employee.Core.Controllers user.Contacts.Clear(); UpdateContacts(memberModel.Contacts, user); - CoreContext.UserManager.SaveUserInfo(ApiContext.Tenant, user); + CoreContext.UserManager.SaveUserInfo(Tenant, user); return new EmployeeWraperFull(user, ApiContext); } @@ -571,7 +572,7 @@ namespace ASC.Employee.Core.Controllers throw new SecurityException(); DeleteContacts(memberModel.Contacts, user); - CoreContext.UserManager.SaveUserInfo(ApiContext.Tenant, user); + CoreContext.UserManager.SaveUserInfo(Tenant, user); return new EmployeeWraperFull(user, ApiContext); } @@ -583,7 +584,7 @@ namespace ASC.Employee.Core.Controllers if (CoreContext.UserManager.IsSystemUser(user.ID)) throw new SecurityException(); - return new ThumbnailsDataWrapper(ApiContext.Tenant, user.ID); + return new ThumbnailsDataWrapper(Tenant, user.ID); } [Create("{userid}/photo")] @@ -604,7 +605,7 @@ namespace ASC.Employee.Core.Controllers userId = SecurityContext.CurrentAccount.ID; } - SecurityContext.DemandPermissions(ApiContext.Tenant, new UserSecurityProvider(userId), Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, new UserSecurityProvider(userId), Constants.Action_EditUser); var userPhoto = model.Files[0]; @@ -629,17 +630,17 @@ namespace ASC.Employee.Core.Controllers if (data.Length > SetupInfo.MaxImageUploadSize) throw new ImageSizeLimitException(); - var mainPhoto = UserPhotoManager.SaveOrUpdatePhoto(ApiContext.Tenant, userId, data); + var mainPhoto = UserPhotoManager.SaveOrUpdatePhoto(Tenant, userId, data); result.Data = new { main = mainPhoto, - retina = UserPhotoManager.GetRetinaPhotoURL(ApiContext.Tenant.TenantId, userId), - max = UserPhotoManager.GetMaxPhotoURL(ApiContext.Tenant.TenantId, userId), - big = UserPhotoManager.GetBigPhotoURL(ApiContext.Tenant.TenantId, userId), - medium = UserPhotoManager.GetMediumPhotoURL(ApiContext.Tenant.TenantId, userId), - small = UserPhotoManager.GetSmallPhotoURL(ApiContext.Tenant.TenantId, userId), + retina = UserPhotoManager.GetRetinaPhotoURL(Tenant.TenantId, userId), + max = UserPhotoManager.GetMaxPhotoURL(Tenant.TenantId, userId), + big = UserPhotoManager.GetBigPhotoURL(Tenant.TenantId, userId), + medium = UserPhotoManager.GetMediumPhotoURL(Tenant.TenantId, userId), + small = UserPhotoManager.GetSmallPhotoURL(Tenant.TenantId, userId), }; } else @@ -688,15 +689,15 @@ namespace ASC.Employee.Core.Controllers if (CoreContext.UserManager.IsSystemUser(user.ID)) throw new SecurityException(); - if (model.Files != UserPhotoManager.GetPhotoAbsoluteWebPath(ApiContext.Tenant, user.ID)) + if (model.Files != UserPhotoManager.GetPhotoAbsoluteWebPath(Tenant, user.ID)) { UpdatePhotoUrl(model.Files, user); } - CoreContext.UserManager.SaveUserInfo(ApiContext.Tenant, user); + CoreContext.UserManager.SaveUserInfo(Tenant, user); MessageService.Send(MessageAction.UserAddedAvatar, MessageTarget.Create(user.ID), user.DisplayUserName(false)); - return new ThumbnailsDataWrapper(ApiContext.Tenant, user.ID); + return new ThumbnailsDataWrapper(Tenant, user.ID); } [Delete("{userid}/photo")] @@ -707,14 +708,14 @@ namespace ASC.Employee.Core.Controllers if (CoreContext.UserManager.IsSystemUser(user.ID)) throw new SecurityException(); - SecurityContext.DemandPermissions(ApiContext.Tenant, new UserSecurityProvider(user.ID), Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, new UserSecurityProvider(user.ID), Constants.Action_EditUser); - UserPhotoManager.RemovePhoto(ApiContext.Tenant, user.ID); + UserPhotoManager.RemovePhoto(Tenant, user.ID); - CoreContext.UserManager.SaveUserInfo(ApiContext.Tenant, user); + CoreContext.UserManager.SaveUserInfo(Tenant, user); MessageService.Send(MessageAction.UserDeletedAvatar, MessageTarget.Create(user.ID), user.DisplayUserName(false)); - return new ThumbnailsDataWrapper(ApiContext.Tenant, user.ID); + return new ThumbnailsDataWrapper(Tenant, user.ID); } @@ -726,7 +727,7 @@ namespace ASC.Employee.Core.Controllers if (CoreContext.UserManager.IsSystemUser(user.ID)) throw new SecurityException(); - SecurityContext.DemandPermissions(ApiContext.Tenant, new UserSecurityProvider(user.ID), Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, new UserSecurityProvider(user.ID), Constants.Action_EditUser); if (!string.IsNullOrEmpty(thumbnailsModel.TmpFile)) { @@ -736,18 +737,18 @@ namespace ASC.Employee.Core.Controllers var settings = new UserPhotoThumbnailSettings(thumbnailsModel.X, thumbnailsModel.Y, thumbnailsModel.Width, thumbnailsModel.Height); settings.SaveForUser(user.ID); - UserPhotoManager.SaveOrUpdatePhoto(ApiContext.Tenant, user.ID, data); + UserPhotoManager.SaveOrUpdatePhoto(Tenant, user.ID, data); UserPhotoManager.RemoveTempPhoto(fileName); } else { - UserPhotoThumbnailManager.SaveThumbnails(ApiContext.Tenant.TenantId, thumbnailsModel.X, thumbnailsModel.Y, thumbnailsModel.Width, thumbnailsModel.Height, user.ID); + UserPhotoThumbnailManager.SaveThumbnails(Tenant.TenantId, thumbnailsModel.X, thumbnailsModel.Y, thumbnailsModel.Width, thumbnailsModel.Height, user.ID); } - CoreContext.UserManager.SaveUserInfo(ApiContext.Tenant, user); + CoreContext.UserManager.SaveUserInfo(Tenant, user); MessageService.Send(MessageAction.UserUpdatedAvatarThumbnails, MessageTarget.Create(user.ID), user.DisplayUserName(false)); - return new ThumbnailsDataWrapper(ApiContext.Tenant, user.ID); + return new ThumbnailsDataWrapper(Tenant, user.ID); } @@ -755,7 +756,7 @@ namespace ASC.Employee.Core.Controllers [Create("password", false)] public string SendUserPassword(string email) { - var userInfo = UserManagerWrapper.SendUserPassword(ApiContext.Tenant.TenantId, email, MessageService, HttpContext); + var userInfo = UserManagerWrapper.SendUserPassword(Tenant.TenantId, email, MessageService, HttpContext); return string.Format(Resource.MessageYourPasswordSuccessfullySendedToEmail, userInfo.Email); } @@ -763,11 +764,11 @@ namespace ASC.Employee.Core.Controllers [Update("{userid}/password")] public EmployeeWraperFull ChangeUserPassword(Guid userid, MemberModel memberModel) { - SecurityContext.DemandPermissions(ApiContext.Tenant, new UserSecurityProvider(userid), Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, new UserSecurityProvider(userid), Constants.Action_EditUser); - if (!CoreContext.UserManager.UserExists(userid, ApiContext.Tenant.TenantId)) return null; + if (!CoreContext.UserManager.UserExists(Tenant.TenantId, userid)) return null; - var user = CoreContext.UserManager.GetUsers(userid, ApiContext.Tenant.TenantId); + var user = CoreContext.UserManager.GetUsers(Tenant.TenantId, userid); if (CoreContext.UserManager.IsSystemUser(user.ID)) throw new SecurityException(); @@ -779,16 +780,16 @@ namespace ASC.Employee.Core.Controllers { user.Email = address.Address.ToLowerInvariant(); user.ActivationStatus = EmployeeActivationStatus.Activated; - CoreContext.UserManager.SaveUserInfo(ApiContext.Tenant, user); + CoreContext.UserManager.SaveUserInfo(Tenant, user); } } if (!string.IsNullOrEmpty(memberModel.Password)) { - SecurityContext.SetUserPassword(userid, memberModel.Password); + SecurityContext.SetUserPassword(Tenant.TenantId, userid, memberModel.Password); MessageService.Send(MessageAction.UserUpdatedPassword); - HttpContext.ResetUserCookie(userid); + HttpContext.ResetUserCookie(Tenant.TenantId, userid); MessageService.Send(MessageAction.CookieSettingsUpdated); } @@ -801,11 +802,11 @@ namespace ASC.Employee.Core.Controllers try { var userId = new Guid(userNameOrId); - user = CoreContext.UserManager.GetUsers(userId, ApiContext.Tenant.TenantId); + user = CoreContext.UserManager.GetUsers(Tenant.TenantId, userId); } catch (FormatException) { - user = CoreContext.UserManager.GetUserByUserName(ApiContext.Tenant.TenantId, userNameOrId); + user = CoreContext.UserManager.GetUserByUserName(Tenant.TenantId, userNameOrId); } if (user == null || user.ID == Constants.LostUser.ID) throw new ItemNotFoundException("user not found"); @@ -818,12 +819,12 @@ namespace ASC.Employee.Core.Controllers var retuls = new List(); foreach (var id in model.UserIds.Where(userId => !CoreContext.UserManager.IsSystemUser(userId))) { - SecurityContext.DemandPermissions(ApiContext.Tenant, new UserSecurityProvider(id), Constants.Action_EditUser); - var u = CoreContext.UserManager.GetUsers(id); + SecurityContext.DemandPermissions(Tenant, new UserSecurityProvider(id), Constants.Action_EditUser); + var u = CoreContext.UserManager.GetUsers(Tenant.TenantId, id); if (u.ID == Constants.LostUser.ID || u.IsLDAP()) continue; u.ActivationStatus = activationstatus; - CoreContext.UserManager.SaveUserInfo(ApiContext.Tenant, u); + CoreContext.UserManager.SaveUserInfo(Tenant, u); retuls.Add(new EmployeeWraperFull(u, ApiContext)); } @@ -836,28 +837,28 @@ namespace ASC.Employee.Core.Controllers { var users = model.UserIds .Where(userId => !CoreContext.UserManager.IsSystemUser(userId)) - .Select(userId => CoreContext.UserManager.GetUsers(userId)) + .Select(userId => CoreContext.UserManager.GetUsers(Tenant.TenantId, userId)) .ToList(); foreach (var user in users) { - if (user.IsOwner(ApiContext.Tenant) || user.IsAdmin(ApiContext.Tenant) || user.IsMe() || user.GetListAdminModules(ApiContext.Tenant).Any()) + if (user.IsOwner(Tenant) || user.IsAdmin(Tenant) || user.IsMe() || user.GetListAdminModules(Tenant).Any()) continue; switch (type) { case EmployeeType.User: - if (user.IsVisitor(ApiContext.Tenant)) + if (user.IsVisitor(Tenant)) { - if (TenantStatisticsProvider.GetUsersCount(ApiContext.Tenant) < TenantExtra.GetTenantQuota().ActiveUsers) + if (TenantStatisticsProvider.GetUsersCount(Tenant) < TenantExtra.GetTenantQuota().ActiveUsers) { - CoreContext.UserManager.RemoveUserFromGroup(ApiContext.Tenant, user.ID, Constants.GroupVisitor.ID); + CoreContext.UserManager.RemoveUserFromGroup(Tenant, user.ID, Constants.GroupVisitor.ID); WebItemSecurity.ClearCache(); } } break; case EmployeeType.Visitor: - CoreContext.UserManager.AddUserIntoGroup(ApiContext.Tenant, user.ID, Constants.GroupVisitor.ID); + CoreContext.UserManager.AddUserIntoGroup(Tenant, user.ID, Constants.GroupVisitor.ID); WebItemSecurity.ClearCache(); break; } @@ -871,15 +872,15 @@ namespace ASC.Employee.Core.Controllers [Update("status/{status}")] public IEnumerable UpdateUserStatus(EmployeeStatus status, UpdateMembersModel model) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditUser); - var users = model.UserIds.Select(userId => CoreContext.UserManager.GetUsers(userId)) + var users = model.UserIds.Select(userId => CoreContext.UserManager.GetUsers(Tenant.TenantId, userId)) .Where(u => !CoreContext.UserManager.IsSystemUser(u.ID) && !u.IsLDAP()) .ToList(); foreach (var user in users) { - if (user.IsOwner(ApiContext.Tenant) || user.IsMe()) + if (user.IsOwner(Tenant) || user.IsMe()) continue; switch (status) @@ -887,18 +888,18 @@ namespace ASC.Employee.Core.Controllers case EmployeeStatus.Active: if (user.Status == EmployeeStatus.Terminated) { - if (TenantStatisticsProvider.GetUsersCount(ApiContext.Tenant) < TenantExtra.GetTenantQuota().ActiveUsers || user.IsVisitor(ApiContext.Tenant)) + if (TenantStatisticsProvider.GetUsersCount(Tenant) < TenantExtra.GetTenantQuota().ActiveUsers || user.IsVisitor(Tenant)) { user.Status = EmployeeStatus.Active; - CoreContext.UserManager.SaveUserInfo(ApiContext.Tenant, user); + CoreContext.UserManager.SaveUserInfo(Tenant, user); } } break; case EmployeeStatus.Terminated: user.Status = EmployeeStatus.Terminated; - CoreContext.UserManager.SaveUserInfo(ApiContext.Tenant, user); + CoreContext.UserManager.SaveUserInfo(Tenant, user); - HttpContext.ResetUserCookie(user.ID); + HttpContext.ResetUserCookie(Tenant.TenantId, user.ID); MessageService.Send(MessageAction.CookieSettingsUpdated); break; } @@ -915,7 +916,7 @@ namespace ASC.Employee.Core.Controllers { var users = model.UserIds .Where(userId => !CoreContext.UserManager.IsSystemUser(userId)) - .Select(userId => CoreContext.UserManager.GetUsers(userId)) + .Select(userId => CoreContext.UserManager.GetUsers(Tenant.TenantId, userId)) .ToList(); foreach (var user in users) @@ -924,13 +925,13 @@ namespace ASC.Employee.Core.Controllers if (user.ActivationStatus == EmployeeActivationStatus.Pending) { - if (user.IsVisitor(ApiContext.Tenant)) + if (user.IsVisitor(Tenant)) { - StudioNotifyService.GuestInfoActivation(user); + StudioNotifyService.GuestInfoActivation(Tenant.TenantId, user); } else { - StudioNotifyService.UserInfoActivation(user); + StudioNotifyService.UserInfoActivation(Tenant.TenantId, user); } } else @@ -947,11 +948,11 @@ namespace ASC.Employee.Core.Controllers [Update("delete")] public IEnumerable RemoveUsers(UpdateMembersModel model) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_AddRemoveUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_AddRemoveUser); CheckReassignProccess(model.UserIds); - var users = model.UserIds.Select(userId => CoreContext.UserManager.GetUsers(userId)) + var users = model.UserIds.Select(userId => CoreContext.UserManager.GetUsers(Tenant.TenantId, userId)) .Where(u => !CoreContext.UserManager.IsSystemUser(u.ID) && !u.IsLDAP()) .ToList(); @@ -961,8 +962,8 @@ namespace ASC.Employee.Core.Controllers { if (user.Status != EmployeeStatus.Terminated) continue; - UserPhotoManager.RemovePhoto(ApiContext.Tenant, user.ID); - CoreContext.UserManager.DeleteUser(ApiContext.Tenant,user.ID); + UserPhotoManager.RemovePhoto(Tenant, user.ID); + CoreContext.UserManager.DeleteUser(Tenant,user.ID); QueueWorkerRemove.Start(TenantProvider.CurrentTenantID, user, SecurityContext.CurrentAccount.ID, false); } @@ -975,7 +976,7 @@ namespace ASC.Employee.Core.Controllers [Update("self/delete")] public string SendInstructionsToDelete() { - var user = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); + var user = CoreContext.UserManager.GetUsers(Tenant.TenantId, SecurityContext.CurrentAccount.ID); if (user.IsLDAP()) throw new SecurityException(); @@ -1041,7 +1042,7 @@ namespace ASC.Employee.Core.Controllers [Read(@"reassign/progress")] public ReassignProgressItem GetReassignProgress(Guid userId) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditUser); return QueueWorkerReassign.GetProgressItemStatus(TenantProvider.CurrentTenantID, userId); } @@ -1049,7 +1050,7 @@ namespace ASC.Employee.Core.Controllers [Update(@"reassign/terminate")] public void TerminateReassign(Guid userId) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditUser); QueueWorkerReassign.Terminate(TenantProvider.CurrentTenantID, userId); } @@ -1057,22 +1058,22 @@ namespace ASC.Employee.Core.Controllers [Create(@"reassign/start")] public ReassignProgressItem StartReassign(Guid fromUserId, Guid toUserId, bool deleteProfile) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditUser); - var fromUser = CoreContext.UserManager.GetUsers(fromUserId); + var fromUser = CoreContext.UserManager.GetUsers(Tenant.TenantId, fromUserId); if (fromUser == null || fromUser.ID == Constants.LostUser.ID) throw new ArgumentException("User with id = " + fromUserId + " not found"); - if (fromUser.IsOwner(ApiContext.Tenant) || fromUser.IsMe() || fromUser.Status != EmployeeStatus.Terminated) + if (fromUser.IsOwner(Tenant) || fromUser.IsMe() || fromUser.Status != EmployeeStatus.Terminated) throw new ArgumentException("Can not delete user with id = " + fromUserId); - var toUser = CoreContext.UserManager.GetUsers(toUserId); + var toUser = CoreContext.UserManager.GetUsers(Tenant.TenantId, toUserId); if (toUser == null || toUser.ID == Constants.LostUser.ID) throw new ArgumentException("User with id = " + toUserId + " not found"); - if (toUser.IsVisitor(ApiContext.Tenant) || toUser.Status == EmployeeStatus.Terminated) + if (toUser.IsVisitor(Tenant) || toUser.Status == EmployeeStatus.Terminated) throw new ArgumentException("Can not reassign data to user with id = " + toUserId); return QueueWorkerReassign.Start(TenantProvider.CurrentTenantID, fromUserId, toUserId, SecurityContext.CurrentAccount.ID, deleteProfile); @@ -1086,7 +1087,7 @@ namespace ASC.Employee.Core.Controllers if (reassignStatus == null || reassignStatus.IsCompleted) continue; - var userName = CoreContext.UserManager.GetUsers(userId).DisplayUserName(); + var userName = CoreContext.UserManager.GetUsers(Tenant.TenantId, userId).DisplayUserName(); throw new Exception(string.Format(Resource.ReassignDataRemoveUserError, userName)); } } @@ -1100,7 +1101,7 @@ namespace ASC.Employee.Core.Controllers [Read(@"remove/progress")] public RemoveProgressItem GetRemoveProgress(Guid userId) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditUser); return QueueWorkerRemove.GetProgressItemStatus(TenantProvider.CurrentTenantID, userId); } @@ -1108,7 +1109,7 @@ namespace ASC.Employee.Core.Controllers [Update(@"remove/terminate")] public void TerminateRemove(Guid userId) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditUser); QueueWorkerRemove.Terminate(TenantProvider.CurrentTenantID, userId); } @@ -1116,14 +1117,14 @@ namespace ASC.Employee.Core.Controllers [Create(@"remove/start")] public RemoveProgressItem StartRemove(Guid userId) { - SecurityContext.DemandPermissions(ApiContext.Tenant, Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, Constants.Action_EditUser); - var user = CoreContext.UserManager.GetUsers(userId); + var user = CoreContext.UserManager.GetUsers(Tenant.TenantId, userId); if (user == null || user.ID == Constants.LostUser.ID) throw new ArgumentException("User with id = " + userId + " not found"); - if (user.IsOwner(ApiContext.Tenant) || user.IsMe() || user.Status != EmployeeStatus.Terminated) + if (user.IsOwner(Tenant) || user.IsMe() || user.Status != EmployeeStatus.Terminated) throw new ArgumentException("Can not delete user with id = " + userId); return QueueWorkerRemove.Start(TenantProvider.CurrentTenantID, user, SecurityContext.CurrentAccount.ID, true); @@ -1133,30 +1134,30 @@ namespace ASC.Employee.Core.Controllers private void UpdateDepartments(IEnumerable department, UserInfo user) { - if (!SecurityContext.CheckPermissions(ApiContext.Tenant, Constants.Action_EditGroups)) return; + if (!SecurityContext.CheckPermissions(Tenant, Constants.Action_EditGroups)) return; if (department == null) return; - var groups = CoreContext.UserManager.GetUserGroups(ApiContext.Tenant, user.ID); + var groups = CoreContext.UserManager.GetUserGroups(Tenant, user.ID); var managerGroups = new List(); foreach (var groupInfo in groups) { - CoreContext.UserManager.RemoveUserFromGroup(ApiContext.Tenant, user.ID, groupInfo.ID); - var managerId = CoreContext.UserManager.GetDepartmentManager(ApiContext.Tenant.TenantId, groupInfo.ID); + CoreContext.UserManager.RemoveUserFromGroup(Tenant, user.ID, groupInfo.ID); + var managerId = CoreContext.UserManager.GetDepartmentManager(Tenant.TenantId, groupInfo.ID); if (managerId == user.ID) { managerGroups.Add(groupInfo.ID); - CoreContext.UserManager.SetDepartmentManager(ApiContext.Tenant.TenantId, groupInfo.ID, Guid.Empty); + CoreContext.UserManager.SetDepartmentManager(Tenant.TenantId, groupInfo.ID, Guid.Empty); } } foreach (var guid in department) { - var userDepartment = CoreContext.UserManager.GetGroupInfo(ApiContext.Tenant.TenantId, guid); + var userDepartment = CoreContext.UserManager.GetGroupInfo(Tenant.TenantId, guid); if (userDepartment != Constants.LostGroupInfo) { - CoreContext.UserManager.AddUserIntoGroup(ApiContext.Tenant, user.ID, guid); + CoreContext.UserManager.AddUserIntoGroup(Tenant, user.ID, guid); if (managerGroups.Contains(guid)) { - CoreContext.UserManager.SetDepartmentManager(ApiContext.Tenant.TenantId, guid, user.ID); + CoreContext.UserManager.SetDepartmentManager(Tenant.TenantId, guid, user.ID); } } } @@ -1164,7 +1165,7 @@ namespace ASC.Employee.Core.Controllers private void UpdateContacts(IEnumerable contacts, UserInfo user) { - SecurityContext.DemandPermissions(ApiContext.Tenant, new UserSecurityProvider(user.ID), Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, new UserSecurityProvider(user.ID), Constants.Action_EditUser); user.Contacts.Clear(); if (contacts == null) return; @@ -1177,7 +1178,7 @@ namespace ASC.Employee.Core.Controllers private void DeleteContacts(IEnumerable contacts, UserInfo user) { - SecurityContext.DemandPermissions(ApiContext.Tenant, new UserSecurityProvider(user.ID), Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, new UserSecurityProvider(user.ID), Constants.Action_EditUser); if (contacts == null) return; foreach (var contact in contacts) @@ -1198,7 +1199,7 @@ namespace ASC.Employee.Core.Controllers return; } - SecurityContext.DemandPermissions(ApiContext.Tenant, new UserSecurityProvider(user.ID), Constants.Action_EditUser); + SecurityContext.DemandPermissions(Tenant, new UserSecurityProvider(user.ID), Constants.Action_EditUser); if (!files.StartsWith("http://") && !files.StartsWith("https://")) { @@ -1209,7 +1210,7 @@ namespace ASC.Employee.Core.Controllers using var inputStream = response.GetResponseStream(); using var br = new BinaryReader(inputStream); var imageByteArray = br.ReadBytes((int)response.ContentLength); - UserPhotoManager.SaveOrUpdatePhoto(ApiContext.Tenant, user.ID, imageByteArray); + UserPhotoManager.SaveOrUpdatePhoto(Tenant, user.ID, imageByteArray); } private static void CheckImgFormat(byte[] data) diff --git a/products/ASC.People/Server/Models/EmployeeWraper.cs b/products/ASC.People/Server/Models/EmployeeWraper.cs index 2bd72745d5..ab955eb61c 100644 --- a/products/ASC.People/Server/Models/EmployeeWraper.cs +++ b/products/ASC.People/Server/Models/EmployeeWraper.cs @@ -59,7 +59,7 @@ namespace ASC.Web.Api.Models if (Id != Guid.Empty) { - var profileUrl = CommonLinkUtility.GetUserProfile(Id, userInfo.Tenant, false); + var profileUrl = CommonLinkUtility.GetUserProfile(userInfo.Tenant, Id, false); ProfileUrl = CommonLinkUtility.GetFullAbsolutePath(httpContext.HttpContext, profileUrl); } } @@ -83,7 +83,7 @@ namespace ASC.Web.Api.Models { try { - return Get(CoreContext.UserManager.GetUsers(userId), context); + return Get(CoreContext.UserManager.GetUsers(context.Tenant.TenantId, userId), context); } catch (Exception) { diff --git a/products/ASC.People/Server/Models/EmployeeWraperFull.cs b/products/ASC.People/Server/Models/EmployeeWraperFull.cs index da2085571a..6520166f2e 100644 --- a/products/ASC.People/Server/Models/EmployeeWraperFull.cs +++ b/products/ASC.People/Server/Models/EmployeeWraperFull.cs @@ -236,7 +236,7 @@ namespace ASC.Web.Api.Models { try { - return GetFull(CoreContext.UserManager.GetUsers(userId), context); + return GetFull(CoreContext.UserManager.GetUsers(context.Tenant.TenantId, userId), context); } catch (Exception) diff --git a/products/ASC.People/Server/Models/GroupWrapperFull.cs b/products/ASC.People/Server/Models/GroupWrapperFull.cs index 348659dffc..733fddb225 100644 --- a/products/ASC.People/Server/Models/GroupWrapperFull.cs +++ b/products/ASC.People/Server/Models/GroupWrapperFull.cs @@ -43,7 +43,7 @@ namespace ASC.Web.Api.Models Category = group.CategoryID; Parent = group.Parent != null ? group.Parent.ID : Guid.Empty; Name = group.Name; - Manager = EmployeeWraper.Get(CoreContext.UserManager.GetUsers(CoreContext.UserManager.GetDepartmentManager(context.Tenant.TenantId, group.ID)), context); + Manager = EmployeeWraper.Get(CoreContext.UserManager.GetUsers(context.Tenant.TenantId, CoreContext.UserManager.GetDepartmentManager(context.Tenant.TenantId, group.ID)), context); if (includeMembers) { diff --git a/products/ASC.People/Server/Models/GroupWrapperSummary.cs b/products/ASC.People/Server/Models/GroupWrapperSummary.cs index bbccf7ffc6..90fb9bef0d 100644 --- a/products/ASC.People/Server/Models/GroupWrapperSummary.cs +++ b/products/ASC.People/Server/Models/GroupWrapperSummary.cs @@ -39,7 +39,7 @@ namespace ASC.Web.Api.Models { Id = group.ID; Name = group.Name; - Manager = CoreContext.UserManager.GetUsers(CoreContext.UserManager.GetDepartmentManager(context.Tenant.TenantId, group.ID)).UserName; + Manager = CoreContext.UserManager.GetUsers(context.Tenant.TenantId, CoreContext.UserManager.GetDepartmentManager(context.Tenant.TenantId, group.ID)).UserName; } protected GroupWrapperSummary() diff --git a/products/ASC.People/Server/Startup.cs b/products/ASC.People/Server/Startup.cs index b914cc944f..fc858de6fd 100644 --- a/products/ASC.People/Server/Startup.cs +++ b/products/ASC.People/Server/Startup.cs @@ -121,7 +121,7 @@ namespace ASC.People Thread.CurrentThread.CurrentCulture = user.GetCulture(); Thread.CurrentThread.CurrentCulture = user.GetCulture(); } - + // await next.Invoke(); }); diff --git a/web/ASC.Web.Api/Controllers/AuthenticationController.cs b/web/ASC.Web.Api/Controllers/AuthenticationController.cs index 4d7b225d0e..374908c0fb 100644 --- a/web/ASC.Web.Api/Controllers/AuthenticationController.cs +++ b/web/ASC.Web.Api/Controllers/AuthenticationController.cs @@ -23,7 +23,7 @@ namespace ASC.Web.Api.Controllers try { - var token = SecurityContext.AuthenticateMe(user.ID); + var token = SecurityContext.AuthenticateMe(tenant.TenantId, user.ID); var expires = TenantCookieSettings.GetExpiresTime(tenant.TenantId); return new AuthenticationTokenData @@ -45,7 +45,7 @@ namespace ASC.Web.Api.Controllers userName, Hasher.Base64Hash(password, HashAlg.SHA256)); - if (user == null || !CoreContext.UserManager.UserExists(user.ID, tenantId)) + if (user == null || !CoreContext.UserManager.UserExists(tenantId, user.ID)) { throw new Exception("user not found"); } diff --git a/web/ASC.Web.Core/Calendars/SharingOptions.cs b/web/ASC.Web.Core/Calendars/SharingOptions.cs index 5108771266..a34a6d9f91 100644 --- a/web/ASC.Web.Core/Calendars/SharingOptions.cs +++ b/web/ASC.Web.Core/Calendars/SharingOptions.cs @@ -59,7 +59,7 @@ namespace ASC.Web.Core.Calendars if(PublicItems.Exists(i=> i.Id.Equals(itemId))) return true; - var u = CoreContext.UserManager.GetUsers(itemId); + var u = CoreContext.UserManager.GetUsers(tenant.TenantId, itemId); if(u!=null && u.ID!= ASC.Core.Users.Constants.LostUser.ID) { var userGroups = new List(CoreContext.UserManager.GetUserGroups(tenant, itemId)); diff --git a/web/ASC.Web.Core/CookiesManager.cs b/web/ASC.Web.Core/CookiesManager.cs index 8b7c69c2ba..a31599b258 100644 --- a/web/ASC.Web.Core/CookiesManager.cs +++ b/web/ASC.Web.Core/CookiesManager.cs @@ -150,7 +150,7 @@ namespace ASC.Web.Core public static void SetLifeTime(this HttpContext httpContext, int lifeTime) { - var tenant = CoreContext.TenantManager.GetCurrentTenant(); + var tenant = CoreContext.TenantManager.GetCurrentTenant(httpContext); if (!CoreContext.UserManager.IsUserInGroup(tenant, SecurityContext.CurrentAccount.ID, Constants.GroupAdmin.ID)) { throw new SecurityException(); @@ -170,7 +170,7 @@ namespace ASC.Web.Core TenantCookieSettings.SetForTenant(tenant.TenantId, settings); - var cookie = SecurityContext.AuthenticateMe(SecurityContext.CurrentAccount.ID); + var cookie = SecurityContext.AuthenticateMe(tenant.TenantId, SecurityContext.CurrentAccount.ID); httpContext.SetCookies(CookiesType.AuthKey, cookie); } @@ -180,7 +180,7 @@ namespace ASC.Web.Core return TenantCookieSettings.GetForTenant(TenantProvider.CurrentTenantID).LifeTime; } - public static void ResetUserCookie(this HttpContext httpContext, Guid? userId = null) + public static void ResetUserCookie(this HttpContext httpContext, int tenantId, Guid? userId = null) { var settings = TenantCookieSettings.GetForUser(userId ?? SecurityContext.CurrentAccount.ID); settings.Index = settings.Index + 1; @@ -188,7 +188,7 @@ namespace ASC.Web.Core if (!userId.HasValue) { - var cookie = SecurityContext.AuthenticateMe(SecurityContext.CurrentAccount.ID); + var cookie = SecurityContext.AuthenticateMe(tenantId, SecurityContext.CurrentAccount.ID); httpContext.SetCookies(CookiesType.AuthKey, cookie); } @@ -196,7 +196,7 @@ namespace ASC.Web.Core public static void ResetTenantCookie(this HttpContext httpContext) { - var tenant = CoreContext.TenantManager.GetCurrentTenant(); + var tenant = CoreContext.TenantManager.GetCurrentTenant(httpContext); if (!CoreContext.UserManager.IsUserInGroup(tenant, SecurityContext.CurrentAccount.ID, Constants.GroupAdmin.ID)) { @@ -207,7 +207,7 @@ namespace ASC.Web.Core settings.Index = settings.Index + 1; TenantCookieSettings.SetForTenant(tenant.TenantId, settings); - var cookie = SecurityContext.AuthenticateMe(SecurityContext.CurrentAccount.ID); + var cookie = SecurityContext.AuthenticateMe(tenant.TenantId, SecurityContext.CurrentAccount.ID); httpContext.SetCookies(CookiesType.AuthKey, cookie); } } diff --git a/web/ASC.Web.Core/Extensions/UserInfoExtension.cs b/web/ASC.Web.Core/Extensions/UserInfoExtension.cs index a3703a8a7b..db63a9f71f 100644 --- a/web/ASC.Web.Core/Extensions/UserInfoExtension.cs +++ b/web/ASC.Web.Core/Extensions/UserInfoExtension.cs @@ -100,7 +100,7 @@ namespace ASC.Core.Users var sb = new StringBuilder(); //check for removed users - if (userInfo == null || !CoreContext.UserManager.UserExists(userInfo.ID, tenant.TenantId)) + if (userInfo == null || !CoreContext.UserManager.UserExists(tenant.TenantId, userInfo.ID)) { sb.Append("profile removed"); } @@ -108,7 +108,7 @@ namespace ASC.Core.Users { var popupID = Guid.NewGuid(); sb.AppendFormat("", popupID, userInfo.ID); - sb.AppendFormat("{1}", userInfo.GetUserProfilePageURLGeneral(), userInfo.DisplayUserName()); + sb.AppendFormat("{1}", userInfo.GetUserProfilePageURLGeneral(tenant.TenantId), userInfo.DisplayUserName()); sb.Append(""); sb.AppendFormat("", popupID, userInfo.ID); @@ -121,9 +121,9 @@ namespace ASC.Core.Users /// /// /// - private static string GetUserProfilePageURLGeneral(this UserInfo userInfo) + private static string GetUserProfilePageURLGeneral(this UserInfo userInfo, int tenantId) { - return CommonLinkUtility.GetUserProfile(userInfo.ID); + return CommonLinkUtility.GetUserProfile(tenantId, userInfo.ID); } } } \ No newline at end of file diff --git a/web/ASC.Web.Core/Helpers/AuthorizationHelper.cs b/web/ASC.Web.Core/Helpers/AuthorizationHelper.cs index 11410b389a..f16ec4e451 100644 --- a/web/ASC.Web.Core/Helpers/AuthorizationHelper.cs +++ b/web/ASC.Web.Core/Helpers/AuthorizationHelper.cs @@ -57,7 +57,7 @@ namespace ASC.Web.Core.Helpers var arr = Encoding.ASCII.GetString(Convert.FromBase64String(authorization.Substring(6))).Split(new[] { ':' }); var username = arr[0]; var password = arr[1]; - var u = CoreContext.UserManager.GetUserByEmail(CoreContext.TenantManager.GetCurrentTenant().TenantId, username); + var u = CoreContext.UserManager.GetUserByEmail(CoreContext.TenantManager.GetCurrentTenant(context).TenantId, username); if (u != null && u.ID != ASC.Core.Users.Constants.LostUser.ID) { authCookie = SecurityContext.AuthenticateMe(u.Email, password); diff --git a/web/ASC.Web.Core/Notify/NotifyConfiguration.cs b/web/ASC.Web.Core/Notify/NotifyConfiguration.cs index bc7caf6159..6593906ba9 100644 --- a/web/ASC.Web.Core/Notify/NotifyConfiguration.cs +++ b/web/ASC.Web.Core/Notify/NotifyConfiguration.cs @@ -138,7 +138,7 @@ namespace ASC.Web.Studio.Core.Notify if (guid != default) { - u = CoreContext.UserManager.GetUsers(guid, tenant.TenantId); + u = CoreContext.UserManager.GetUsers(tenant.TenantId, guid); } } @@ -236,9 +236,9 @@ namespace ASC.Web.Studio.Core.Notify if (SecurityContext.IsAuthenticated) { aid = SecurityContext.CurrentAccount.ID; - if (CoreContext.UserManager.UserExists(aid, tenant.TenantId)) + if (CoreContext.UserManager.UserExists(tenant.TenantId, aid)) { - aname = CoreContext.UserManager.GetUsers(aid).DisplayUserName(false) + aname = CoreContext.UserManager.GetUsers(tenant.TenantId, aid).DisplayUserName(false) .Replace(">", ">") .Replace("<", "<"); } @@ -261,7 +261,7 @@ namespace ASC.Web.Studio.Core.Notify request.Arguments.Add(new TagValue(CommonTags.AuthorID, aid)); request.Arguments.Add(new TagValue(CommonTags.AuthorName, aname)); - request.Arguments.Add(new TagValue(CommonTags.AuthorUrl, CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.GetUserProfile(aid)))); + request.Arguments.Add(new TagValue(CommonTags.AuthorUrl, CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.GetUserProfile(tenant.TenantId, aid)))); request.Arguments.Add(new TagValue(CommonTags.VirtualRootPath, CommonLinkUtility.GetFullAbsolutePath("~").TrimEnd('/'))); request.Arguments.Add(new TagValue(CommonTags.ProductID, product != null ? product.ID : Guid.Empty)); request.Arguments.Add(new TagValue(CommonTags.ModuleID, module != null ? module.ID : Guid.Empty)); @@ -275,7 +275,7 @@ namespace ASC.Web.Studio.Core.Notify if (!request.Arguments.Any(x => CommonTags.SendFrom.Equals(x.Tag))) { - request.Arguments.Add(new TagValue(CommonTags.SendFrom, CoreContext.TenantManager.GetCurrentTenant().Name)); + request.Arguments.Add(new TagValue(CommonTags.SendFrom, tenant.Name)); } AddLetterLogo(request); diff --git a/web/ASC.Web.Core/Notify/StudioNotifyService.cs b/web/ASC.Web.Core/Notify/StudioNotifyService.cs index 0dd92e23a6..acfdc51787 100644 --- a/web/ASC.Web.Core/Notify/StudioNotifyService.cs +++ b/web/ASC.Web.Core/Notify/StudioNotifyService.cs @@ -121,9 +121,9 @@ namespace ASC.Web.Studio.Core.Notify #region User Password - public void UserPasswordChange(UserInfo userInfo) + public void UserPasswordChange(int tenantId, UserInfo userInfo) { - var hash = Hasher.Base64Hash(CoreContext.Authentication.GetUserPasswordHash(userInfo.ID)); + var hash = Hasher.Base64Hash(CoreContext.Authentication.GetUserPasswordHash(tenantId, userInfo.ID)); var confirmationUrl = CommonLinkUtility.GetConfirmationUrl(userInfo.Email, ConfirmType.PasswordChange, hash); Func greenButtonText = () => WebstudioNotifyPatternResource.ButtonChangePassword; @@ -268,7 +268,7 @@ namespace ASC.Web.Studio.Core.Notify client.SendNoticeAsync(tenantId, Actions.UserHasJoin, null); } - public void SendJoinMsg(string email, EmployeeType emplType) + public void SendJoinMsg(int tenantId, string email, EmployeeType emplType) { var inviteUrl = CommonLinkUtility.GetConfirmationUrl(email, ConfirmType.EmpInvite, (int)emplType, SecurityContext.CurrentAccount.ID) + String.Format("&emplType={0}", emplType); @@ -281,12 +281,12 @@ namespace ASC.Web.Studio.Core.Notify new[] { EMailSenderName }, new TagValue(Tags.InviteLink, inviteUrl), TagValues.GreenButton(greenButtonText, inviteUrl), - TagValues.SendFrom()); + TagValues.SendFrom(tenantId)); } public void UserInfoAddedAfterInvite(int tenantId, UserInfo newUserInfo) { - if (!CoreContext.UserManager.UserExists(newUserInfo.ID, tenantId)) return; + if (!CoreContext.UserManager.UserExists(tenantId, newUserInfo.ID)) return; INotifyAction notifyAction; var footer = "social"; @@ -318,8 +318,7 @@ namespace ASC.Web.Studio.Core.Notify else { notifyAction = Actions.SaasUserWelcomeV10; - var tenant = CoreContext.TenantManager.GetCurrentTenant(); - analytics = StudioNotifyHelper.GetNotifyAnalytics(tenant.TenantId, notifyAction, false, false, true, false); + analytics = StudioNotifyHelper.GetNotifyAnalytics(tenantId, notifyAction, false, false, true, false); } Func greenButtonText = () => TenantExtra.Enterprise @@ -340,7 +339,7 @@ namespace ASC.Web.Studio.Core.Notify public void GuestInfoAddedAfterInvite(int tenantId, UserInfo newUserInfo) { - if (!CoreContext.UserManager.UserExists(newUserInfo.ID, tenantId)) return; + if (!CoreContext.UserManager.UserExists(tenantId, newUserInfo.ID)) return; INotifyAction notifyAction; var analytics = string.Empty; @@ -374,7 +373,7 @@ namespace ASC.Web.Studio.Core.Notify new TagValue(CommonTags.Analytics, analytics)); } - public void UserInfoActivation(UserInfo newUserInfo) + public void UserInfoActivation(int tenantId, UserInfo newUserInfo) { if (newUserInfo.IsActive) throw new ArgumentException("User is already activated!"); @@ -392,8 +391,7 @@ namespace ASC.Web.Studio.Core.Notify else { notifyAction = Actions.SaasUserActivationV10; - var tenant = CoreContext.TenantManager.GetCurrentTenant(); - analytics = StudioNotifyHelper.GetNotifyAnalytics(tenant.TenantId, notifyAction, false, false, true, false); + analytics = StudioNotifyHelper.GetNotifyAnalytics(tenantId, notifyAction, false, false, true, false); } var confirmationUrl = GenerateActivationConfirmUrl(newUserInfo); @@ -407,11 +405,11 @@ namespace ASC.Web.Studio.Core.Notify TagValues.GreenButton(greenButtonText, confirmationUrl), new TagValue(Tags.UserName, newUserInfo.FirstName.HtmlEncode()), new TagValue(CommonTags.Footer, footer), - TagValues.SendFrom(), + TagValues.SendFrom(tenantId), new TagValue(CommonTags.Analytics, analytics)); } - public void GuestInfoActivation(UserInfo newUserInfo) + public void GuestInfoActivation(int tenantId, UserInfo newUserInfo) { if (newUserInfo.IsActive) throw new ArgumentException("User is already activated!"); @@ -429,8 +427,7 @@ namespace ASC.Web.Studio.Core.Notify else { notifyAction = Actions.SaasGuestActivationV10; - var tenant = CoreContext.TenantManager.GetCurrentTenant(); - analytics = StudioNotifyHelper.GetNotifyAnalytics(tenant.TenantId, notifyAction, false, false, false, true); + analytics = StudioNotifyHelper.GetNotifyAnalytics(tenantId, notifyAction, false, false, false, true); } var confirmationUrl = GenerateActivationConfirmUrl(newUserInfo); @@ -444,7 +441,7 @@ namespace ASC.Web.Studio.Core.Notify TagValues.GreenButton(greenButtonText, confirmationUrl), new TagValue(Tags.UserName, newUserInfo.FirstName.HtmlEncode()), new TagValue(CommonTags.Footer, footer), - TagValues.SendFrom(), + TagValues.SendFrom(tenantId), new TagValue(CommonTags.Analytics, analytics)); } @@ -472,11 +469,11 @@ namespace ASC.Web.Studio.Core.Notify Actions.ReassignsCompleted, new[] { StudioNotifyHelper.ToRecipient(tenantId, recipientId) }, new[] { EMailSenderName }, - new TagValue(Tags.UserName, DisplayUserSettings.GetFullUserName(recipientId)), + new TagValue(Tags.UserName, DisplayUserSettings.GetFullUserName(tenantId, recipientId)), new TagValue(Tags.FromUserName, fromUser.DisplayUserName()), - new TagValue(Tags.FromUserLink, GetUserProfileLink(fromUser.ID)), + new TagValue(Tags.FromUserLink, GetUserProfileLink(tenantId, fromUser.ID)), new TagValue(Tags.ToUserName, toUser.DisplayUserName()), - new TagValue(Tags.ToUserLink, GetUserProfileLink(toUser.ID))); + new TagValue(Tags.ToUserLink, GetUserProfileLink(tenantId, toUser.ID))); } public void SendMsgReassignsFailed(int tenantId, Guid recipientId, UserInfo fromUser, UserInfo toUser, string message) @@ -485,11 +482,11 @@ namespace ASC.Web.Studio.Core.Notify Actions.ReassignsFailed, new[] { StudioNotifyHelper.ToRecipient(tenantId, recipientId) }, new[] { EMailSenderName }, - new TagValue(Tags.UserName, DisplayUserSettings.GetFullUserName(recipientId)), + new TagValue(Tags.UserName, DisplayUserSettings.GetFullUserName(tenantId, recipientId)), new TagValue(Tags.FromUserName, fromUser.DisplayUserName()), - new TagValue(Tags.FromUserLink, GetUserProfileLink(fromUser.ID)), + new TagValue(Tags.FromUserLink, GetUserProfileLink(tenantId, fromUser.ID)), new TagValue(Tags.ToUserName, toUser.DisplayUserName()), - new TagValue(Tags.ToUserLink, GetUserProfileLink(toUser.ID)), + new TagValue(Tags.ToUserLink, GetUserProfileLink(tenantId, toUser.ID)), new TagValue(Tags.Message, message)); } @@ -499,9 +496,9 @@ namespace ASC.Web.Studio.Core.Notify CoreContext.Configuration.CustomMode ? Actions.RemoveUserDataCompletedCustomMode : Actions.RemoveUserDataCompleted, new[] { StudioNotifyHelper.ToRecipient(tenantId, recipientId) }, new[] { EMailSenderName }, - new TagValue(Tags.UserName, DisplayUserSettings.GetFullUserName(recipientId)), + new TagValue(Tags.UserName, DisplayUserSettings.GetFullUserName(tenantId, recipientId)), new TagValue(Tags.FromUserName, fromUserName.HtmlEncode()), - new TagValue(Tags.FromUserLink, GetUserProfileLink(fromUserId)), + new TagValue(Tags.FromUserLink, GetUserProfileLink(tenantId, fromUserId)), new TagValue("DocsSpace", FileSizeComment.FilesSizeToString(docsSpace)), new TagValue("CrmSpace", FileSizeComment.FilesSizeToString(crmSpace)), new TagValue("MailSpace", FileSizeComment.FilesSizeToString(mailSpace)), @@ -514,15 +511,15 @@ namespace ASC.Web.Studio.Core.Notify Actions.RemoveUserDataFailed, new[] { StudioNotifyHelper.ToRecipient(tenantId, recipientId) }, new[] { EMailSenderName }, - new TagValue(Tags.UserName, DisplayUserSettings.GetFullUserName(recipientId)), + new TagValue(Tags.UserName, DisplayUserSettings.GetFullUserName(tenantId, recipientId)), new TagValue(Tags.FromUserName, fromUserName.HtmlEncode()), - new TagValue(Tags.FromUserLink, GetUserProfileLink(fromUserId)), + new TagValue(Tags.FromUserLink, GetUserProfileLink(tenantId, fromUserId)), new TagValue(Tags.Message, message)); } public void SendAdminWelcome(UserInfo newUserInfo, int tenantId) { - if (!CoreContext.UserManager.UserExists(newUserInfo.ID, tenantId)) return; + if (!CoreContext.UserManager.UserExists(tenantId, newUserInfo.ID)) return; if (!newUserInfo.IsActive) throw new ArgumentException("User is not activated yet!"); @@ -561,7 +558,7 @@ namespace ASC.Web.Studio.Core.Notify } tagValues.Add(new TagValue(Tags.UserName, newUserInfo.FirstName.HtmlEncode())); - tagValues.Add(TagValues.SendFrom()); + tagValues.Add(TagValues.SendFrom(tenantId)); client.SendNoticeToAsync( notifyAction, @@ -578,12 +575,12 @@ namespace ASC.Web.Studio.Core.Notify Actions.BackupCreated, new[] { StudioNotifyHelper.ToRecipient(tenantId, userId) }, new[] {EMailSenderName}, - new TagValue(Tags.OwnerName, CoreContext.UserManager.GetUsers(userId).DisplayUserName())); + new TagValue(Tags.OwnerName, CoreContext.UserManager.GetUsers(tenantId, userId).DisplayUserName())); } public void SendMsgRestoreStarted(Tenant tenant, bool notifyAllUsers) { - var owner = CoreContext.UserManager.GetUsers(tenant.OwnerId); + var owner = CoreContext.UserManager.GetUsers(tenant.TenantId, tenant.OwnerId); var users = notifyAllUsers ? StudioNotifyHelper.RecipientFromEmail(CoreContext.UserManager.GetUsers(tenant, EmployeeStatus.Active).Where(r => r.ActivationStatus == EmployeeActivationStatus.Activated).Select(u => u.Email).ToArray(), false) @@ -597,7 +594,7 @@ namespace ASC.Web.Studio.Core.Notify public void SendMsgRestoreCompleted(Tenant tenant, bool notifyAllUsers) { - var owner = CoreContext.UserManager.GetUsers(CoreContext.TenantManager.GetCurrentTenant().OwnerId); + var owner = CoreContext.UserManager.GetUsers(tenant.TenantId, tenant.OwnerId); var users = notifyAllUsers @@ -617,7 +614,7 @@ namespace ASC.Web.Studio.Core.Notify public void SendMsgPortalDeactivation(Tenant t, string deactivateUrl, string activateUrl) { - var u = CoreContext.UserManager.GetUsers(t.OwnerId); + var u = CoreContext.UserManager.GetUsers(t.TenantId, t.OwnerId); Func greenButtonText = () => WebstudioNotifyPatternResource.ButtonDeactivatePortal; @@ -632,7 +629,7 @@ namespace ASC.Web.Studio.Core.Notify public void SendMsgPortalDeletion(Tenant t, string url, bool showAutoRenewText) { - var u = CoreContext.UserManager.GetUsers(t.OwnerId); + var u = CoreContext.UserManager.GetUsers(t.TenantId, t.OwnerId); Func greenButtonText = () => WebstudioNotifyPatternResource.ButtonDeletePortal; @@ -661,7 +658,7 @@ namespace ASC.Web.Studio.Core.Notify public void SendMsgDnsChange(Tenant t, string confirmDnsUpdateUrl, string portalAddress, string portalDns) { - var u = CoreContext.UserManager.GetUsers(t.OwnerId); + var u = CoreContext.UserManager.GetUsers(t.TenantId, t.OwnerId); Func greenButtonText = () => WebstudioNotifyPatternResource.ButtonConfirmPortalAddressChange; @@ -678,7 +675,7 @@ namespace ASC.Web.Studio.Core.Notify public void SendMsgConfirmChangeOwner(Tenant t, string newOwnerName, string confirmOwnerUpdateUrl) { - var u = CoreContext.UserManager.GetUsers(t.OwnerId); + var u = CoreContext.UserManager.GetUsers(t.TenantId, t.OwnerId); Func greenButtonText = () => WebstudioNotifyPatternResource.ButtonConfirmPortalOwnerUpdate; @@ -744,7 +741,7 @@ namespace ASC.Web.Studio.Core.Notify public void SendInvitePersonal(int tenantId, string email, string additionalMember = "", bool analytics = true) { var newUserInfo = CoreContext.UserManager.GetUserByEmail(tenantId, email); - if (CoreContext.UserManager.UserExists(newUserInfo.ID, tenantId)) return; + if (CoreContext.UserManager.UserExists(tenantId, newUserInfo.ID)) return; var lang = CoreContext.Configuration.CustomMode ? "ru-RU" @@ -765,7 +762,7 @@ namespace ASC.Web.Studio.Core.Notify new TagValue(CommonTags.Culture, Thread.CurrentThread.CurrentUICulture.Name)); } - public void SendUserWelcomePersonal(UserInfo newUserInfo) + public void SendUserWelcomePersonal(int tenantId, UserInfo newUserInfo) { client.SendNoticeToAsync( CoreContext.Configuration.CustomMode ? Actions.PersonalCustomModeAfterRegistration1 : Actions.PersonalAfterRegistration1, @@ -773,7 +770,7 @@ namespace ASC.Web.Studio.Core.Notify new[] { EMailSenderName }, new TagValue(CommonTags.Footer, CoreContext.Configuration.CustomMode ? "personalCustomMode" : "personal"), new TagValue(CommonTags.MasterTemplate, "HtmlMasterPersonal"), - TagValues.SendFrom()); + TagValues.SendFrom(tenantId)); } #endregion @@ -854,9 +851,9 @@ namespace ASC.Web.Studio.Core.Notify return CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.GetMyStaff()); } - private static string GetUserProfileLink(Guid userId) + private static string GetUserProfileLink(int tenantId, Guid userId) { - return CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.GetUserProfile(userId)); + return CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.GetUserProfile(tenantId, userId)); } private static string AddHttpToUrl(string url) diff --git a/web/ASC.Web.Core/Notify/StudioNotifyServiceSender.cs b/web/ASC.Web.Core/Notify/StudioNotifyServiceSender.cs index 386af8ba11..80dcc03a13 100644 --- a/web/ASC.Web.Core/Notify/StudioNotifyServiceSender.cs +++ b/web/ASC.Web.Core/Notify/StudioNotifyServiceSender.cs @@ -56,7 +56,7 @@ namespace ASC.Web.Studio.Core.Notify public void OnMessage(NotifyItem item) { CoreContext.TenantManager.SetCurrentTenant(item.TenantId); - SecurityContext.AuthenticateMe(Guid.Parse(item.UserId)); + SecurityContext.AuthenticateMe(item.TenantId, Guid.Parse(item.UserId)); CultureInfo culture = null; var tenant = CoreContext.TenantManager.GetCurrentTenant(false); @@ -65,7 +65,7 @@ namespace ASC.Web.Studio.Core.Notify culture = tenant.GetCulture(); } - var user = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); + var user = CoreContext.UserManager.GetUsers(item.TenantId, SecurityContext.CurrentAccount.ID); if (!string.IsNullOrEmpty(user.CultureName)) { culture = CultureInfo.GetCultureInfo(user.CultureName); diff --git a/web/ASC.Web.Core/Notify/StudioPeriodicNotify.cs b/web/ASC.Web.Core/Notify/StudioPeriodicNotify.cs index 46ca7ab832..433a1763e7 100644 --- a/web/ASC.Web.Core/Notify/StudioPeriodicNotify.cs +++ b/web/ASC.Web.Core/Notify/StudioPeriodicNotify.cs @@ -280,7 +280,7 @@ namespace ASC.Web.Studio.Core.Notify { log.InfoFormat("start CreateCoupon to {0}", tenant.TenantAlias); - coupon = SetupInfo.IsSecretEmail(CoreContext.UserManager.GetUsers(tenant.OwnerId).Email) + coupon = SetupInfo.IsSecretEmail(CoreContext.UserManager.GetUsers(tenant.TenantId, tenant.OwnerId).Email) ? tenant.TenantAlias : CouponManager.CreateCoupon(); @@ -346,7 +346,7 @@ namespace ASC.Web.Studio.Core.Notify greenButtonText = () => WebstudioNotifyPatternResource.ButtonLeaveFeedback; - var owner = CoreContext.UserManager.GetUsers(tenant.OwnerId); + var owner = CoreContext.UserManager.GetUsers(tenant.TenantId, tenant.OwnerId); greenButtonUrl = SetupInfo.TeamlabSiteRedirect + "/remove-portal-feedback-form.aspx#" + Convert.ToBase64String( System.Text.Encoding.UTF8.GetBytes("{\"firstname\":\"" + owner.FirstName + @@ -420,7 +420,7 @@ namespace ASC.Web.Studio.Core.Notify greenButtonText = () => WebstudioNotifyPatternResource.ButtonLeaveFeedback; - var owner = CoreContext.UserManager.GetUsers(tenant.OwnerId); + var owner = CoreContext.UserManager.GetUsers(tenant.TenantId, tenant.OwnerId); greenButtonUrl = SetupInfo.TeamlabSiteRedirect + "/remove-portal-feedback-form.aspx#" + Convert.ToBase64String( System.Text.Encoding.UTF8.GetBytes("{\"firstname\":\"" + owner.FirstName + @@ -447,7 +447,7 @@ namespace ASC.Web.Studio.Core.Notify if (action == null) continue; var users = toowner - ? new List { CoreContext.UserManager.GetUsers(tenant.OwnerId, tenant.TenantId) } + ? new List { CoreContext.UserManager.GetUsers(tenant.TenantId, tenant.OwnerId) } : StudioNotifyHelper.GetRecipients(tenant, toadmins, tousers, false); @@ -1074,7 +1074,7 @@ namespace ASC.Web.Studio.Core.Notify { INotifyAction action; - SecurityContext.AuthenticateMe(CoreContext.Authentication.GetAccountByID(user.ID)); + SecurityContext.AuthenticateMe(CoreContext.Authentication.GetAccountByID(tenant.TenantId, user.ID)); var culture = tenant.GetCulture(); if (!string.IsNullOrEmpty(user.CultureName)) diff --git a/web/ASC.Web.Core/Notify/StudioWhatsNewNotify.cs b/web/ASC.Web.Core/Notify/StudioWhatsNewNotify.cs index 93de06e210..ce0039da5b 100644 --- a/web/ASC.Web.Core/Notify/StudioWhatsNewNotify.cs +++ b/web/ASC.Web.Core/Notify/StudioWhatsNewNotify.cs @@ -84,7 +84,7 @@ namespace ASC.Web.Studio.Core.Notify continue; } - SecurityContext.AuthenticateMe(CoreContext.Authentication.GetAccountByID(user.ID)); + SecurityContext.AuthenticateMe(CoreContext.Authentication.GetAccountByID(tenant.TenantId, user.ID)); var culture = string.IsNullOrEmpty(user.CultureName) ? tenant.GetCulture() : user.GetCulture(); @@ -118,7 +118,7 @@ namespace ASC.Web.Studio.Core.Notify { Date = f.CreatedDate, UserName = f.Author != null && f.Author.UserInfo != null ? f.Author.UserInfo.DisplayUserName() : string.Empty, - UserAbsoluteURL = f.Author != null && f.Author.UserInfo != null ? CommonLinkUtility.GetFullAbsolutePath(f.Author.UserInfo.GetUserProfilePageURL()) : string.Empty, + UserAbsoluteURL = f.Author != null && f.Author.UserInfo != null ? CommonLinkUtility.GetFullAbsolutePath(f.Author.UserInfo.GetUserProfilePageURL(tenant.TenantId)) : string.Empty, Title = HtmlUtil.GetText(f.Title, 512), URL = CommonLinkUtility.GetFullAbsolutePath(f.ItemUrl), BreadCrumbs = new string[0], @@ -141,7 +141,7 @@ namespace ASC.Web.Studio.Core.Notify { Date = prawbc.CreatedDate, UserName = prawbc.Author != null && prawbc.Author.UserInfo != null ? prawbc.Author.UserInfo.DisplayUserName() : string.Empty, - UserAbsoluteURL = prawbc.Author != null && prawbc.Author.UserInfo != null ? CommonLinkUtility.GetFullAbsolutePath(prawbc.Author.UserInfo.GetUserProfilePageURL()) : string.Empty, + UserAbsoluteURL = prawbc.Author != null && prawbc.Author.UserInfo != null ? CommonLinkUtility.GetFullAbsolutePath(prawbc.Author.UserInfo.GetUserProfilePageURL(tenant.TenantId)) : string.Empty, Title = HtmlUtil.GetText(prawbc.Title, 512), URL = CommonLinkUtility.GetFullAbsolutePath(prawbc.ItemUrl), BreadCrumbs = new string[0], @@ -161,7 +161,7 @@ namespace ASC.Web.Studio.Core.Notify { Date = ls.CreatedDate, UserName = ls.Author != null && ls.Author.UserInfo != null ? ls.Author.UserInfo.DisplayUserName() : string.Empty, - UserAbsoluteURL = ls.Author != null && ls.Author.UserInfo != null ? CommonLinkUtility.GetFullAbsolutePath(ls.Author.UserInfo.GetUserProfilePageURL()) : string.Empty, + UserAbsoluteURL = ls.Author != null && ls.Author.UserInfo != null ? CommonLinkUtility.GetFullAbsolutePath(ls.Author.UserInfo.GetUserProfilePageURL(tenant.TenantId)) : string.Empty, Title = HtmlUtil.GetText(ls.Title, 512), URL = CommonLinkUtility.GetFullAbsolutePath(ls.ItemUrl), BreadCrumbs = i == 0 ? new string[1]{gr.Key} : new string[0], diff --git a/web/ASC.Web.Core/Notify/TagValues.cs b/web/ASC.Web.Core/Notify/TagValues.cs index 181bd1136f..5eda3b9050 100644 --- a/web/ASC.Web.Core/Notify/TagValues.cs +++ b/web/ASC.Web.Core/Notify/TagValues.cs @@ -157,12 +157,12 @@ namespace ASC.Web.Studio.Core.Notify return new TagActionValue("TableItem" + number, action); } - public static ITagValue SendFrom() + public static ITagValue SendFrom(int tenantId) { return new TagValue(CommonTags.SendFrom, SecurityContext.IsAuthenticated && SecurityContext.CurrentAccount is IUserAccount ? DisplayUserSettings.GetFullUserName( - CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID), false) + CoreContext.UserManager.GetUsers(tenantId, SecurityContext.CurrentAccount.ID), false) .Replace(">", ">") .Replace("<", "<") : CoreContext.TenantManager.GetCurrentTenant().Name); diff --git a/web/ASC.Web.Core/Users/DisplayUserSettings.cs b/web/ASC.Web.Core/Users/DisplayUserSettings.cs index f46dd760b6..484621521b 100644 --- a/web/ASC.Web.Core/Users/DisplayUserSettings.cs +++ b/web/ASC.Web.Core/Users/DisplayUserSettings.cs @@ -53,9 +53,9 @@ namespace ASC.Web.Core.Users }; } - public static string GetFullUserName(Guid userID, bool withHtmlEncode = true) + public static string GetFullUserName(int tenantId, Guid userID, bool withHtmlEncode = true) { - return GetFullUserName(CoreContext.UserManager.GetUsers(userID), withHtmlEncode); + return GetFullUserName(CoreContext.UserManager.GetUsers(tenantId, userID), withHtmlEncode); } public static string GetFullUserName(UserInfo userInfo, bool withHtmlEncode = true) @@ -69,7 +69,7 @@ namespace ASC.Web.Core.Users { return string.Empty; } - if (!userInfo.ID.Equals(Guid.Empty) && !CoreContext.UserManager.UserExists(userInfo.ID, userInfo.Tenant)) + if (!userInfo.ID.Equals(Guid.Empty) && !CoreContext.UserManager.UserExists(userInfo.Tenant, userInfo.ID)) { return "profile removed"; } diff --git a/web/ASC.Web.Core/Users/UserInfoExtension.cs b/web/ASC.Web.Core/Users/UserInfoExtension.cs index c419b5fcb8..7d8437958a 100644 --- a/web/ASC.Web.Core/Users/UserInfoExtension.cs +++ b/web/ASC.Web.Core/Users/UserInfoExtension.cs @@ -37,16 +37,16 @@ namespace ASC.Core.Users { public static class StudioUserInfoExtension { - public static string GetUserProfilePageURL(this UserInfo userInfo) + public static string GetUserProfilePageURL(this UserInfo userInfo, int tenantId) { - return userInfo == null ? "" : CommonLinkUtility.GetUserProfile(userInfo.ID); + return userInfo == null ? "" : CommonLinkUtility.GetUserProfile(tenantId, userInfo.ID); } public static string RenderProfileLink(this UserInfo userInfo, Guid productID, int tenantId) { var sb = new StringBuilder(); - if (userInfo == null || !CoreContext.UserManager.UserExists(userInfo.ID, tenantId)) + if (userInfo == null || !CoreContext.UserManager.UserExists(tenantId, userInfo.ID)) { sb.Append(""); sb.Append(Resource.ProfileRemoved); @@ -61,7 +61,7 @@ namespace ASC.Core.Users else { sb.AppendFormat("", Guid.NewGuid(), userInfo.ID, productID); - sb.AppendFormat("{1}", userInfo.GetUserProfilePageURL(), userInfo.DisplayUserName()); + sb.AppendFormat("{1}", userInfo.GetUserProfilePageURL(tenantId), userInfo.DisplayUserName()); sb.Append(""); } return sb.ToString(); @@ -73,7 +73,7 @@ namespace ASC.Core.Users var linkCss = string.IsNullOrEmpty(linkCssClass) ? "" : linkCssClass; var sb = new StringBuilder(); - if (userInfo == null || !CoreContext.UserManager.UserExists(userInfo.ID, tenantId)) + if (userInfo == null || !CoreContext.UserManager.UserExists(tenantId, userInfo.ID)) { sb.AppendFormat("", containerCss); sb.Append(Resource.ProfileRemoved); @@ -88,7 +88,7 @@ namespace ASC.Core.Users else { sb.AppendFormat("", containerCss, Guid.NewGuid(), userInfo.ID); - sb.AppendFormat("{2}", linkCss, userInfo.GetUserProfilePageURL(), userInfo.DisplayUserName()); + sb.AppendFormat("{2}", linkCss, userInfo.GetUserProfilePageURL(tenantId), userInfo.DisplayUserName()); sb.Append(""); } return sb.ToString(); diff --git a/web/ASC.Web.Core/Users/UserManagerWrapper.cs b/web/ASC.Web.Core/Users/UserManagerWrapper.cs index 132c3a478a..7dfed8fc79 100644 --- a/web/ASC.Web.Core/Users/UserManagerWrapper.cs +++ b/web/ASC.Web.Core/Users/UserManagerWrapper.cs @@ -107,11 +107,11 @@ namespace ASC.Web.Core.Users } var newUserInfo = CoreContext.UserManager.SaveUserInfo(tenant, userInfo, isVisitor); - SecurityContext.SetUserPassword(newUserInfo.ID, password); + SecurityContext.SetUserPassword(tenant.TenantId, newUserInfo.ID, password); if (CoreContext.Configuration.Personal) { - StudioNotifyService.SendUserWelcomePersonal(newUserInfo); + StudioNotifyService.SendUserWelcomePersonal(tenant.TenantId, newUserInfo); return newUserInfo; } @@ -139,11 +139,11 @@ namespace ASC.Web.Core.Users //Send user invite if (isVisitor) { - StudioNotifyService.GuestInfoActivation(newUserInfo); + StudioNotifyService.GuestInfoActivation(tenant.TenantId, newUserInfo); } else { - StudioNotifyService.UserInfoActivation(newUserInfo); + StudioNotifyService.UserInfoActivation(tenant.TenantId, newUserInfo); } } @@ -183,7 +183,7 @@ namespace ASC.Web.Core.Users } var userInfo = CoreContext.UserManager.GetUserByEmail(tenantId, email); - if (!CoreContext.UserManager.UserExists(userInfo.ID, tenantId) || string.IsNullOrEmpty(userInfo.Email)) + if (!CoreContext.UserManager.UserExists(tenantId, userInfo.ID) || string.IsNullOrEmpty(userInfo.Email)) { throw new Exception(string.Format(Resource.ErrorUserNotFoundByEmail, email)); } @@ -200,7 +200,7 @@ namespace ASC.Web.Core.Users throw new Exception(Resource.CouldNotRecoverPasswordForSsoUser); } - StudioNotifyService.UserPasswordChange(userInfo); + StudioNotifyService.UserPasswordChange(tenantId, userInfo); var displayUserName = userInfo.DisplayUserName(false); messageService.Send(MessageAction.UserSentPasswordChangeInstructions, displayUserName); diff --git a/web/ASC.Web.Core/Utility/CommonLinkUtility.cs b/web/ASC.Web.Core/Utility/CommonLinkUtility.cs index 4025c804fc..a6d262dd5d 100644 --- a/web/ASC.Web.Core/Utility/CommonLinkUtility.cs +++ b/web/ASC.Web.Core/Utility/CommonLinkUtility.cs @@ -168,23 +168,18 @@ namespace ASC.Web.Studio.Utility } public static string GetUserProfile(int tenantId) { - return GetUserProfile(null, tenantId); + return GetUserProfile(tenantId, null); } - public static string GetUserProfile(Guid userID) + public static string GetUserProfile(int tenantId, Guid userID) { - return GetUserProfile(userID, CoreContext.TenantManager.GetCurrentTenant().TenantId); - } - - public static string GetUserProfile(Guid userID, int tenantId) - { - if (!CoreContext.UserManager.UserExists(userID, tenantId)) + if (!CoreContext.UserManager.UserExists(tenantId, userID)) return GetEmployees(); - return GetUserProfile(userID.ToString(), tenantId); + return GetUserProfile(tenantId, userID.ToString()); } - public static string GetUserProfile(string user, int tenantId, bool absolute = true) + public static string GetUserProfile(int tenantId, string user, bool absolute = true) { var queryParams = ""; @@ -202,7 +197,7 @@ namespace ASC.Web.Studio.Utility } } - queryParams = guid != Guid.Empty ? GetUserParamsPair(guid, tenantId) : ParamName_UserUserName + "=" + HttpUtility.UrlEncode(user); + queryParams = guid != Guid.Empty ? GetUserParamsPair(tenantId, guid) : ParamName_UserUserName + "=" + HttpUtility.UrlEncode(user); } var url = absolute ? ToAbsolute("~/products/people/") : "/products/people/"; @@ -211,9 +206,9 @@ namespace ASC.Web.Studio.Utility return url; } - public static string GetUserProfile(Guid user, int tenantId, bool absolute = true) + public static string GetUserProfile(int tenantId, Guid user, bool absolute = true) { - var queryParams = GetUserParamsPair(user, tenantId); + var queryParams = GetUserParamsPair(tenantId, user); var url = absolute ? ToAbsolute("~/products/people/") : "/products/people/"; url += "profile.aspx?"; @@ -452,11 +447,11 @@ namespace ASC.Web.Studio.Utility return result; } - public static string GetUserParamsPair(Guid userID, int tenantId) + public static string GetUserParamsPair(int tenantId, Guid userID) { return - CoreContext.UserManager.UserExists(userID, tenantId) - ? GetUserParamsPair(CoreContext.UserManager.GetUsers(userID, tenantId)) + CoreContext.UserManager.UserExists(tenantId, userID) + ? GetUserParamsPair(CoreContext.UserManager.GetUsers(tenantId, userID)) : ""; } diff --git a/web/ASC.Web.Core/Utility/TenantExtra.cs b/web/ASC.Web.Core/Utility/TenantExtra.cs index ab17f86086..f2957b2bda 100644 --- a/web/ASC.Web.Core/Utility/TenantExtra.cs +++ b/web/ASC.Web.Core/Utility/TenantExtra.cs @@ -75,10 +75,13 @@ namespace ASC.Web.Studio.Utility public static bool EnableControlPanel { - get { return Enterprise && + get { + var tenant = CoreContext.TenantManager.GetCurrentTenant(); + return Enterprise && GetTenantQuota().ControlPanel && GetCurrentTariff().State < TariffState.NotPaid && - CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).IsAdmin(CoreContext.TenantManager.GetCurrentTenant()); } + CoreContext.UserManager.GetUsers(tenant.TenantId, SecurityContext.CurrentAccount.ID).IsAdmin(tenant); + } } public static bool EnableDocbuilder @@ -161,7 +164,7 @@ namespace ASC.Web.Studio.Utility { CoreContext.PaymentManager.SendTrialRequest( TenantProvider.CurrentTenantID, - CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID)); + CoreContext.UserManager.GetUsers(TenantProvider.CurrentTenantID, SecurityContext.CurrentAccount.ID)); } public static int GetRemainingCountUsers(Tenant tenant) diff --git a/web/ASC.Web.Core/WebItemSecurity.cs b/web/ASC.Web.Core/WebItemSecurity.cs index 5cbc2b9981..ca64d1ca83 100644 --- a/web/ASC.Web.Core/WebItemSecurity.cs +++ b/web/ASC.Web.Core/WebItemSecurity.cs @@ -109,27 +109,27 @@ namespace ASC.Web.Core webitem.ID == WebItemManager.PeopleProductID || webitem.ID == WebItemManager.BirthdaysProductID || webitem.ID == WebItemManager.MailProductID) && - CoreContext.UserManager.GetUsers(@for).IsVisitor(tenant)) + CoreContext.UserManager.GetUsers(tenant.TenantId, @for).IsVisitor(tenant)) { // hack: crm, people, birtthday and mail products not visible for collaborators result = false; } else if ((webitem.ID == WebItemManager.CalendarProductID || webitem.ID == WebItemManager.TalkProductID) && - CoreContext.UserManager.GetUsers(@for).IsOutsider(tenant)) + CoreContext.UserManager.GetUsers(tenant.TenantId, @for).IsOutsider(tenant)) { // hack: calendar and talk products not visible for outsider result = false; } else if (webitem is IModule) { - result = SecurityContext.PermissionResolver.Check(tenant, CoreContext.Authentication.GetAccountByID(@for), securityObj, null, Read) && + result = SecurityContext.PermissionResolver.Check(tenant, CoreContext.Authentication.GetAccountByID(tenant.TenantId, @for), securityObj, null, Read) && IsAvailableForUser(tenant, WebItemManager.Instance.GetParentItemID(webitem.ID), @for); } else { var hasUsers = CoreContext.AuthorizationManager.GetAces(Guid.Empty, Read.ID, securityObj).Any(a => a.SubjectId != ASC.Core.Users.Constants.GroupEveryone.ID); - result = SecurityContext.PermissionResolver.Check(tenant, CoreContext.Authentication.GetAccountByID(@for), securityObj, null, Read) || + result = SecurityContext.PermissionResolver.Check(tenant, CoreContext.Authentication.GetAccountByID(tenant.TenantId, @for), securityObj, null, Read) || (hasUsers && IsProductAdministrator(tenant, securityObj.WebItemId, @for)); } } @@ -192,7 +192,7 @@ namespace ASC.Web.Core Enabled = !info.Any() || (!module && info.Any(i => i.Item2)) || (module && info.All(i => i.Item2)), Users = info - .Select(i => CoreContext.UserManager.GetUsers(i.Item1)) + .Select(i => CoreContext.UserManager.GetUsers(tenantId, i.Item1)) .Where(u => u.ID != ASC.Core.Users.Constants.LostUser.ID), Groups = info