refactoring
This commit is contained in:
parent
20f36a9a8a
commit
49b259abff
@ -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)
|
||||
{
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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<Guid> 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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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};
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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",
|
||||
|
@ -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<GroupWrapperSummary> 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<GroupWrapperSummary> 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<Guid> 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<Guid> 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<Guid> 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<Guid> 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<Guid> 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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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<EmployeeWraper> 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<UserInfo> 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<List<Guid>>();
|
||||
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<EmployeeWraperFull>();
|
||||
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<EmployeeWraperFull> 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<EmployeeWraperFull> 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<Guid> 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<Guid>();
|
||||
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<Contact> 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<Contact> 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)
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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()
|
||||
|
@ -121,7 +121,7 @@ namespace ASC.People
|
||||
Thread.CurrentThread.CurrentCulture = user.GetCulture();
|
||||
Thread.CurrentThread.CurrentCulture = user.GetCulture();
|
||||
}
|
||||
|
||||
//
|
||||
await next.Invoke();
|
||||
});
|
||||
|
||||
|
@ -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");
|
||||
}
|
||||
|
@ -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<GroupInfo>(CoreContext.UserManager.GetUserGroups(tenant, itemId));
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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("<span class='userLink text-medium-describe' style='white-space:nowrap;'>profile removed</span>");
|
||||
}
|
||||
@ -108,7 +108,7 @@ namespace ASC.Core.Users
|
||||
{
|
||||
var popupID = Guid.NewGuid();
|
||||
sb.AppendFormat("<span class=\"userLink\" style='white-space:nowrap;' id='{0}' data-uid='{1}'>", popupID, userInfo.ID);
|
||||
sb.AppendFormat("<a class='linkDescribe' href=\"{0}\">{1}</a>", userInfo.GetUserProfilePageURLGeneral(), userInfo.DisplayUserName());
|
||||
sb.AppendFormat("<a class='linkDescribe' href=\"{0}\">{1}</a>", userInfo.GetUserProfilePageURLGeneral(tenant.TenantId), userInfo.DisplayUserName());
|
||||
sb.Append("</span>");
|
||||
|
||||
sb.AppendFormat("<script language='javascript'> StudioUserProfileInfo.RegistryElement('{0}','\"{1}\"); </script>", popupID, userInfo.ID);
|
||||
@ -121,9 +121,9 @@ namespace ASC.Core.Users
|
||||
/// </summary>
|
||||
/// <param name="userInfo"></param>
|
||||
/// <returns></returns>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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<string> 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<string> 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<string> 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<string> 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<string> 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<string> 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)
|
||||
|
@ -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);
|
||||
|
@ -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<UserInfo> { CoreContext.UserManager.GetUsers(tenant.OwnerId, tenant.TenantId) }
|
||||
? new List<UserInfo> { 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))
|
||||
|
@ -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],
|
||||
|
@ -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);
|
||||
|
@ -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";
|
||||
}
|
||||
|
@ -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("<span class='userLink text-medium-describe'>");
|
||||
sb.Append(Resource.ProfileRemoved);
|
||||
@ -61,7 +61,7 @@ namespace ASC.Core.Users
|
||||
else
|
||||
{
|
||||
sb.AppendFormat("<span class=\"userLink\" id=\"{0}\" data-uid=\"{1}\" data-pid=\"{2}\">", Guid.NewGuid(), userInfo.ID, productID);
|
||||
sb.AppendFormat("<a class='linkDescribe' href=\"{0}\">{1}</a>", userInfo.GetUserProfilePageURL(), userInfo.DisplayUserName());
|
||||
sb.AppendFormat("<a class='linkDescribe' href=\"{0}\">{1}</a>", userInfo.GetUserProfilePageURL(tenantId), userInfo.DisplayUserName());
|
||||
sb.Append("</span>");
|
||||
}
|
||||
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("<span class='{0}'>", containerCss);
|
||||
sb.Append(Resource.ProfileRemoved);
|
||||
@ -88,7 +88,7 @@ namespace ASC.Core.Users
|
||||
else
|
||||
{
|
||||
sb.AppendFormat("<span class=\"{0}\" id=\"{1}\" data-uid=\"{2}\" >", containerCss, Guid.NewGuid(), userInfo.ID);
|
||||
sb.AppendFormat("<a class='{0}' href=\"{1}\">{2}</a>", linkCss, userInfo.GetUserProfilePageURL(), userInfo.DisplayUserName());
|
||||
sb.AppendFormat("<a class='{0}' href=\"{1}\">{2}</a>", linkCss, userInfo.GetUserProfilePageURL(tenantId), userInfo.DisplayUserName());
|
||||
sb.Append("</span>");
|
||||
}
|
||||
return sb.ToString();
|
||||
|
@ -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);
|
||||
|
@ -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))
|
||||
: "";
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user