refactoring

This commit is contained in:
pavelbannov 2019-08-09 15:28:19 +03:00
parent 20f36a9a8a
commit 49b259abff
41 changed files with 305 additions and 305 deletions

View File

@ -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)
{

View File

@ -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))
{

View File

@ -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);

View File

@ -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);
}
}
}

View File

@ -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)

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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)

View File

@ -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};

View File

@ -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();

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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)
{

View File

@ -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

View File

@ -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",

View File

@ -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);
}
}
}

View File

@ -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)

View File

@ -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)
{

View File

@ -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)

View File

@ -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)
{

View File

@ -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()

View File

@ -121,7 +121,7 @@ namespace ASC.People
Thread.CurrentThread.CurrentCulture = user.GetCulture();
Thread.CurrentThread.CurrentCulture = user.GetCulture();
}
//
await next.Invoke();
});

View File

@ -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");
}

View File

@ -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));

View File

@ -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);
}
}

View File

@ -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);
}
}
}

View File

@ -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);

View File

@ -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(">", "&#62")
.Replace("<", "&#60");
}
@ -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);

View File

@ -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)

View File

@ -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);

View File

@ -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))

View File

@ -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],

View File

@ -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(">", "&#62")
.Replace("<", "&#60")
: CoreContext.TenantManager.GetCurrentTenant().Name);

View File

@ -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";
}

View File

@ -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();

View File

@ -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);

View File

@ -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))
: "";
}

View File

@ -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)

View File

@ -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