public IEnumerable <EmployeeWraper> GetProductAdministrators(Guid productid) { return(WebItemSecurity.GetProductAdministrators(productid) .Select(EmployeeWraper.Get) .ToList()); }
private void InitProductSettingsInlineScript() { var isAdmin = WebItemSecurity.IsProductAdministrator(CommonLinkUtility.GetProductID(), SecurityContext.CurrentAccount.ID); RegisterInlineScript(string.Format("window.ASC.Resources.Master.IsProductAdmin={0};", isAdmin.ToString().ToLowerInvariant()), true, false); }
public static bool IsAdministrator(Guid userId) { return(CoreContext.UserManager.IsUserInGroup(userId, Constants.GroupAdmin.ID) || WebItemSecurity.IsProductAdministrator(ProductEntryPoint.ID, userId)); }
private void RegisterClientScript() { Page.RegisterBodyScripts("~/usercontrols/management/accessrights/js/accessrights.js") .RegisterStyle("~/usercontrols/management/accessrights/css/accessrights.less"); var curTenant = CoreContext.TenantManager.GetCurrentTenant(); var currentOwner = CoreContext.UserManager.GetUsers(curTenant.OwnerId); var admins = WebItemSecurity.GetProductAdministrators(Guid.Empty).Where(admin => admin.ID != currentOwner.ID).SortByUserName(); var sb = new StringBuilder(); sb.AppendFormat("ownerId = {0};", JavaScriptSerializer.Serialize(curTenant.OwnerId)); sb.AppendFormat("adminList = {0};", JavaScriptSerializer.Serialize(admins.ConvertAll(u => new { id = u.ID, smallFotoUrl = u.GetSmallPhotoURL(), displayName = u.DisplayUserName(), title = u.Title.HtmlEncode(), userUrl = CommonLinkUtility.GetUserProfile(u.ID), accessList = GetAccessList(u.ID, WebItemSecurity.IsProductAdministrator(Guid.Empty, u.ID)) })) ); var managementPage = Page as Studio.Management; var tenantAccess = managementPage != null ? managementPage.TenantAccess : TenantAccessSettings.Load(); if (!tenantAccess.Anyone) { var productItemList = GetProductItemListForSerialization(); foreach (var productItem in productItemList) { var ids = productItem.SelectedUsers.Select(i => i.ID).ToArray(); var names = productItem.SelectedUsers.Select(i => i.DisplayUserName()).ToArray(); sb.AppendFormat("SelectedUsers_{0} = {1};", productItem.ItemName, JavaScriptSerializer.Serialize( new { IDs = ids, Names = names, PeopleImgSrc = PeopleImgSrc, TrashImgSrc = TrashImgSrc, TrashImgTitle = Resource.DeleteButton, CurrentUserID = SecurityContext.CurrentAccount.ID }) ); ids = productItem.SelectedGroups.Select(i => i.ID).ToArray(); names = productItem.SelectedGroups.Select(i => i.Name.HtmlEncode()).ToArray(); sb.AppendFormat("SelectedGroups_{0} = {1};", productItem.ItemName, JavaScriptSerializer.Serialize( new { IDs = ids, Names = names, GroupImgSrc = GroupImgSrc, TrashImgSrc = TrashImgSrc, TrashImgTitle = Resource.DeleteButton }) ); if (!productItem.CanNotBeDisabled) { sb.AppendFormat("ASC.Settings.AccessRights.initProduct('{0}');", Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(productItem)))); } } } sb.AppendFormat("ASC.Settings.AccessRights.init({0});", JavaScriptSerializer.Serialize(Products.Select(p => p.GetSysName()).ToArray()) ); Page.RegisterInlineScript(sb.ToString()); }
public static bool IsCalndarAvailable() { return(WebItemSecurity.IsAvailableForUser(WebItemManager.CalendarProductID.ToString(), SecurityContext.CurrentAccount.ID)); }
public EmployeeWraperFull UpdateMember(bool isVisitor, string userid, string email, string firstname, string lastname, string comment, Guid[] department, string title, string location, string sex, ApiDateTime birthday, ApiDateTime worksfrom, IEnumerable <Contact> contacts, string files, bool?disable) { SecurityContext.DemandPermissions(new UserSecurityProvider(new Guid(userid)), Core.Users.Constants.Action_EditUser); var user = GetUserInfo(userid); if (CoreContext.UserManager.IsSystemUser(user.ID)) { throw new SecurityException(); } var self = SecurityContext.CurrentAccount.ID.Equals(user.ID); var resetDate = new DateTime(1900, 01, 01); //Update it var isLdap = user.IsLDAP(); var isSso = user.IsSSO(); if (!isLdap && !isSso) { //Set common fields user.FirstName = firstname ?? user.FirstName; user.LastName = lastname ?? user.LastName; //Validate email if (!string.IsNullOrEmpty(email)) { var address = new MailAddress(email); user.Email = address.Address; } user.Title = title ?? user.Title; user.Location = location ?? user.Location; } user.Notes = comment ?? user.Notes; user.Sex = ("male".Equals(sex, StringComparison.OrdinalIgnoreCase) ? true : ("female".Equals(sex, StringComparison.OrdinalIgnoreCase) ? (bool?)false : null)) ?? user.Sex; user.BirthDate = birthday != null?TenantUtil.DateTimeFromUtc(Convert.ToDateTime(birthday)) : user.BirthDate; if (user.BirthDate == resetDate) { user.BirthDate = null; } user.WorkFromDate = worksfrom != null?TenantUtil.DateTimeFromUtc(Convert.ToDateTime(worksfrom)) : user.WorkFromDate; if (user.WorkFromDate == resetDate) { user.WorkFromDate = null; } //Update contacts UpdateContacts(contacts, user); UpdateDepartments(department, user); if (files != UserPhotoManager.GetPhotoAbsoluteWebPath(user.ID)) { UpdatePhotoUrl(files, user); } if (disable.HasValue) { user.Status = disable.Value ? EmployeeStatus.Terminated : EmployeeStatus.Active; user.TerminatedDate = disable.Value ? DateTime.UtcNow : (DateTime?)null; } if (self && !CoreContext.UserManager.IsUserInGroup(SecurityContext.CurrentAccount.ID, Core.Users.Constants.GroupAdmin.ID)) { StudioNotifyService.Instance.SendMsgToAdminAboutProfileUpdated(); } // change user type var canBeGuestFlag = !user.IsOwner() && !user.IsAdmin() && !user.GetListAdminModules().Any() && !user.IsMe(); if (isVisitor && !user.IsVisitor() && canBeGuestFlag) { CoreContext.UserManager.AddUserIntoGroup(user.ID, Core.Users.Constants.GroupVisitor.ID); WebItemSecurity.ClearCache(); } if (!self && !isVisitor && user.IsVisitor()) { var usersQuota = TenantExtra.GetTenantQuota().ActiveUsers; if (TenantStatisticsProvider.GetUsersCount() < usersQuota) { CoreContext.UserManager.RemoveUserFromGroup(user.ID, Core.Users.Constants.GroupVisitor.ID); WebItemSecurity.ClearCache(); } else { throw new TenantQuotaException(string.Format("Exceeds the maximum active users ({0})", usersQuota)); } } CoreContext.UserManager.SaveUserInfo(user, isVisitor); MessageService.Send(Request, MessageAction.UserUpdated, user.DisplayUserName(false)); return(new EmployeeWraperFull(user)); }
public void ProcessRequest(HttpContext context) { try { _context = context; SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem); if (!CheckPermission()) { throw new Exception(CRMSettingResource.WebToLeadsForm_InvalidKeyException); } var productInfo = WebItemSecurity.GetSecurityInfo(ProductEntryPoint.ID.ToString()); if (!productInfo.Enabled) { throw new Exception(CRMCommonResource.CRMProductIsDisabled); } Contact contact; var fieldCollector = new NameValueCollection(); var addressTemplate = new JObject(); foreach (String addressPartName in Enum.GetNames(typeof(AddressPart))) { addressTemplate.Add(addressPartName.ToLower(), ""); } var addressTemplateStr = addressTemplate.ToString(); var isCompany = false; var isCompanyString = GetValue("is_company"); var firstName = GetValue("firstName"); var lastName = GetValue("lastName"); var companyName = GetValue("companyName"); if (!String.IsNullOrEmpty(isCompanyString)) { if (!Boolean.TryParse(isCompanyString, out isCompany)) { throw new ArgumentException(); } } else //old scheme { if (!String.IsNullOrEmpty(firstName)) { isCompany = false; } else if (!String.IsNullOrEmpty(companyName)) { isCompany = true; } else { throw new ArgumentException(); } } if (isCompany) { contact = new Company(); ((Company)contact).CompanyName = companyName; fieldCollector.Add(CRMContactResource.CompanyName, companyName); } else { contact = new Person(); ((Person)contact).FirstName = firstName; ((Person)contact).LastName = lastName; ((Person)contact).JobTitle = GetValue("jobTitle"); fieldCollector.Add(CRMContactResource.FirstName, firstName); fieldCollector.Add(CRMContactResource.LastName, lastName); if (!String.IsNullOrEmpty(GetValue("jobTitle"))) { fieldCollector.Add(CRMContactResource.JobTitle, ((Person)contact).JobTitle); } } contact.About = GetValue("about"); if (!String.IsNullOrEmpty(contact.About)) { fieldCollector.Add(CRMContactResource.About, contact.About); } if (!String.IsNullOrEmpty(GetValue("is_shared"))) { contact.ShareType = Convert.ToBoolean(GetValue("is_shared")) ? ShareType.ReadWrite : ShareType.None; } else { contact.ShareType = (ShareType)(Convert.ToInt32(GetValue("share_type"))); } contact.ID = Global.DaoFactory.GetContactDao().SaveContact(contact); var messageAction = contact is Company ? MessageAction.CompanyCreatedWithWebForm : MessageAction.PersonCreatedWithWebForm; MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, messageAction, contact.GetTitle()); var contactInfos = new List <ContactInfo>(); foreach (var key in _context.Request.Form.AllKeys) { if (key.StartsWith("customField_")) { var fieldID = Convert.ToInt32(key.Split(new[] { '_' })[1]); String fieldValue = GetValue(key); if (String.IsNullOrEmpty(fieldValue)) { continue; } var customField = Global.DaoFactory.GetCustomFieldDao().GetFieldDescription(fieldID); if (customField == null || !(customField.EntityType == EntityType.Contact || customField.EntityType == EntityType.Company && isCompany || customField.EntityType == EntityType.Person && !isCompany)) { continue; } if (customField.FieldType == CustomFieldType.CheckBox) { fieldValue = fieldValue == "on" || fieldValue == "true" ? "true" : "false"; } fieldCollector.Add(customField.Label, fieldValue); Global.DaoFactory.GetCustomFieldDao().SetFieldValue(isCompany ? EntityType.Company : EntityType.Person, contact.ID, fieldID, fieldValue); } else if (key.StartsWith("contactInfo_")) { var nameParts = key.Split(new[] { '_' }).Skip(1).ToList(); var contactInfoType = (ContactInfoType)Enum.Parse(typeof(ContactInfoType), nameParts[0]); var category = Convert.ToInt32(nameParts[1]); bool categoryIsExists = Enum.GetValues(ContactInfo.GetCategory(contactInfoType)).Cast <object>() .Any(categoryEnum => (int)categoryEnum == category); if (!categoryIsExists) { throw new ArgumentException(String.Format("Category for {0} not found", nameParts[0])); } if (contactInfoType == ContactInfoType.Address) { var addressPart = (AddressPart)Enum.Parse(typeof(AddressPart), nameParts[2]); var findedAddress = contactInfos.Find(item => (category == item.Category) && (item.InfoType == ContactInfoType.Address)); if (findedAddress == null) { findedAddress = new ContactInfo { Category = category, InfoType = contactInfoType, Data = addressTemplateStr, ContactID = contact.ID }; contactInfos.Add(findedAddress); } var addressParts = JObject.Parse(findedAddress.Data); addressParts[addressPart.ToString().ToLower()] = GetValue(key); findedAddress.Data = addressParts.ToString(); continue; } var fieldValue = GetValue(key); if (String.IsNullOrEmpty(fieldValue)) { continue; } contactInfos.Add(new ContactInfo { Category = category, InfoType = contactInfoType, Data = fieldValue, ContactID = contact.ID, IsPrimary = true }); } else if (String.Compare(key, "tag", true) == 0) { var tags = _context.Request.Form.GetValues("tag"); Global.DaoFactory.GetTagDao().SetTagToEntity(EntityType.Contact, contact.ID, tags); } } contactInfos.ForEach(item => fieldCollector[item.InfoType.ToLocalizedString()] = PrepareteDataToView(item.InfoType, item.Data)); Global.DaoFactory.GetContactInfoDao().SaveList(contactInfos); var notifyList = GetValue("notify_list"); if (!String.IsNullOrEmpty(notifyList)) { NotifyClient.Instance.SendAboutCreateNewContact( notifyList .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(item => new Guid(item)).ToList(), contact.ID, contact.GetTitle(), fieldCollector); } var managersList = GetValue("managers_list"); SetPermission(contact, managersList); if (contact is Person && !String.IsNullOrEmpty(companyName)) { AssignPersonToCompany((Person)contact, companyName, managersList); } if (contact is Company && !String.IsNullOrEmpty(firstName) && !String.IsNullOrEmpty(lastName)) { AssignCompanyToPerson((Company)contact, firstName, lastName, managersList); } SecurityContext.Logout(); var newURL = new UriBuilder(GetValue("return_url")).Uri.AbsoluteUri; context.Response.Buffer = true; context.Response.Status = "302 Object moved"; context.Response.AddHeader("Location", newURL); context.Response.Write("<HTML><Head>"); context.Response.Write(String.Format("<META HTTP-EQUIV=Refresh CONTENT=\"0;URL={0}\">", newURL)); context.Response.Write(String.Format("<Script>window.location='{0}';</Script>", newURL)); context.Response.Write("</Head>"); context.Response.Write("</HTML>"); } catch (Exception error) { LogManager.GetLogger("ASC.CRM").Error(error); context.Response.StatusCode = 400; context.Response.Write(HttpUtility.HtmlEncode(error.Message)); } }
public FeedModule(TenantManager tenantManager, WebItemSecurity webItemSecurity) { TenantManager = tenantManager; WebItemSecurity = webItemSecurity; }
private void LoadControls() { var feedList = (FeedList)LoadControl(FeedList.Location); loaderHolder.Controls.Add(LoadControl(LoaderPage.Location)); controlsHolder.Controls.Add(feedList); var emptyScreen = new EmptyScreenControl { ID = "emptyFeedScr", ImgSrc = WebPath.GetPath("UserControls/Feed/images/empty_screen_feed.png"), Header = UserControlsCommonResource.NewsNotFound, Describe = UserControlsCommonResource.NewsNotFoundDescription }; emptyScreensHolder.Controls.Add(emptyScreen); var emptyFilterScreen = new EmptyScreenControl { ID = "emptyFeedFilterScr", ImgSrc = WebPath.GetPath("UserControls/Feed/images/empty_filter.png"), Header = UserControlsCommonResource.FilterNoNews, Describe = UserControlsCommonResource.FilterNoNewsDescription, ButtonHTML = string.Format("<a href='javascript:void(0)' class='baseLinkAction clearFilterButton'>{0}</a>", UserControlsCommonResource.ResetFilter) }; emptyScreensHolder.Controls.Add(emptyFilterScreen); var managerEmptyScreen = (ManagerDashboardEmptyScreen)Page.LoadControl(ManagerDashboardEmptyScreen.Location); emptyScreensHolder.Controls.Add(managerEmptyScreen); var userId = SecurityContext.CurrentAccount.ID; var isVisitor = CoreContext.UserManager.GetUsers(userId).IsVisitor(); emptyScreensHolder.Controls.Add(new EmptyScreenControl { ID = "emptyListCommunity", ImgSrc = WebImageSupplier.GetAbsoluteWebPath("community150.png"), Header = UserControlsCommonResource.FeedEmptyCommunityHeader, Describe = isVisitor ? string.Empty : UserControlsCommonResource.FeedEmptyCommunityDescription, ButtonHTML = isVisitor ? string.Empty : string.Format("<a class='link underline plus' href='{0}'>{1}</a>" + "<br/><a class='link underline plus' href='{2}'>{3}</a>" + "<br/><a class='link underline plus' href='{4}'>{5}</a>", VirtualPathUtility.ToAbsolute("~/Products/Community/Modules/Blogs/AddBlog.aspx"), UserControlsCommonResource.FeedBlogsModuleLink, VirtualPathUtility.ToAbsolute("~/Products/Community/Modules/News/EditNews.aspx"), UserControlsCommonResource.FeedEventsModuleLink, VirtualPathUtility.ToAbsolute("~/Products/Community/Modules/Bookmarking/CreateBookmark.aspx"), UserControlsCommonResource.FeedBookmarkModuleLink) }); emptyScreensHolder.Controls.Add(new EmptyScreenControl { ID = "emptyListCrm", ImgSrc = WebImageSupplier.GetAbsoluteWebPath("empty_screen_persons.png", WebItemManager.CRMProductID), Header = UserControlsCommonResource.FeedEmptyContactListHeader, Describe = UserControlsCommonResource.FeedEmptyContactListDescription, ButtonHTML = string.Format("<a class='link underline plus' href='{0}?action=manage'>{1}</a><br/>" + "<a class='link underline plus' href='{0}?action=manage&type=people'>{2}</a>", VirtualPathUtility.ToAbsolute("~/Products/CRM/Default.aspx"), UserControlsCommonResource.FeedCreateFirstCompany, UserControlsCommonResource.FeedCreateFirstPerson) }); var canCreateProjects = !isVisitor && (CoreContext.UserManager.IsUserInGroup(userId, Constants.GroupAdmin.ID) || WebItemSecurity.IsProductAdministrator(WebItemManager.ProjectsProductID, userId)); emptyScreensHolder.Controls.Add(new EmptyScreenControl { Header = UserControlsCommonResource.FeedEmptyListProjHeader, ImgSrc = WebImageSupplier.GetAbsoluteWebPath("projects_logo.png", WebItemManager.ProjectsProductID), Describe = canCreateProjects ? UserControlsCommonResource.FeedEmptyListProjDescribe : string.Empty, ID = "emptyListProjects", ButtonHTML = canCreateProjects ? string.Format("<a href='{0}' class='link underline addFirstElement'>{1}<a>", VirtualPathUtility.ToAbsolute("~/Products/Projects/Projects.aspx?action=add"), UserControlsCommonResource.FeedCreateFirstProject) : string.Empty }); emptyScreensHolder.Controls.Add(new EmptyScreenControl { ID = "emptyListDocuments", ImgSrc = WebImageSupplier.GetAbsoluteWebPath("documents150.png"), Header = UserControlsCommonResource.FeedCorporateFiles, Describe = UserControlsCommonResource.FeedEmptyScreenDescrCorporate, ButtonHTML = string.Format("<a href=\"{0}\" class=\"link underline up\">{1}</a>", VirtualPathUtility.ToAbsolute("~/Products/Files/"), UserControlsCommonResource.FeedButtonGotoDocuments) }); }
private List <Item> GetDataSource() { var data = new List <Item>(); var modules = WebItemManager.Instance.GetItems(WebZoneType.All, ItemAvailableState.All).Where(item => !item.IsSubItem()).ToList(); foreach (var p in Products) { foreach (var m in modules) { if (Guid.Equals(m.ID, p.ID)) { modules.Remove(m); break; } } var item = new Item { ID = p.ID, Name = p.Name, IconUrl = p.GetIconAbsoluteURL(), DisabledIconUrl = p.GetDisabledIconAbsoluteURL(), SubItems = new List <Item>(), ItemName = p.GetSysName(), UserOpportunitiesLabel = String.Format(Resources.Resource.AccessRightsProductUsersCan, p.Name), UserOpportunities = p.GetUserOpportunities(), HasPermissionSettings = true, CanNotBeDisabled = p.CanNotBeDisabled() }; if (p.HasComplexHierarchyOfAccessRights()) { item.UserOpportunitiesLabel = String.Format(Resources.Resource.AccessRightsProductUsersWithRightsCan, item.Name); } var productInfo = WebItemSecurity.GetSecurityInfo(item.ID.ToString()); item.Disabled = !productInfo.Enabled; item.SelectedGroups = productInfo.Groups.ToList(); item.SelectedUsers = productInfo.Users.ToList(); foreach (var m in p.Modules) { if ((m as Module) != null && (m as IWebItem) != null) { var subItem = new Item { Name = m.Name, ID = m.ID, DisplayedAlways = (m as Module).DisplayedAlways, ItemName = m.GetSysName() }; var moduleInfo = WebItemSecurity.GetSecurityInfo(subItem.ID.ToString()); subItem.Disabled = !moduleInfo.Enabled; subItem.SelectedGroups = moduleInfo.Groups.ToList(); subItem.SelectedUsers = moduleInfo.Users.ToList(); item.SubItems.Add(subItem); } } data.Add(item); } foreach (var m in modules) { var item = new Item { ID = m.ID, Name = m.Name, IconUrl = m.GetIconAbsoluteURL(), DisabledIconUrl = m.GetDisabledIconAbsoluteURL(), SubItems = new List <Item>(), ItemName = m.GetSysName() }; var moduleInfo = WebItemSecurity.GetSecurityInfo(item.ID.ToString()); item.Disabled = !moduleInfo.Enabled; item.SelectedGroups = moduleInfo.Groups.ToList(); item.SelectedUsers = moduleInfo.Users.ToList(); data.Add(item); } return(data); }
/// <summary> /// Search emails in Accounts, Mail, CRM, Peaople Contact System /// </summary> /// <param name="tenant">Tenant id</param> /// <param name="userName">User id</param> /// <param name="term">Search word</param> /// <param name="maxCountPerSystem">limit result per Contact System</param> /// <param name="timeout">Timeout in milliseconds</param> /// <param name="httpContextScheme"></param> /// <returns></returns> public List <string> SearchEmails(int tenant, string userName, string term, int maxCountPerSystem, string httpContextScheme, int timeout = -1) { var equality = new ContactEqualityComparer(); var contacts = new List <string>(); var userGuid = new Guid(userName); var watch = new Stopwatch(); watch.Start(); var apiHelper = new ApiHelper(httpContextScheme); var taskList = new List <Task <List <string> > >() { Task.Run(() => { CoreContext.TenantManager.SetCurrentTenant(tenant); SecurityContext.AuthenticateMe(userGuid); return(SearchMailContacts(tenant, userName, term, maxCountPerSystem).ToList()); }), Task.Run(() => { CoreContext.TenantManager.SetCurrentTenant(tenant); SecurityContext.AuthenticateMe(userGuid); return(SearchAccountEmails(tenant, userName, term)); }), Task.Run(() => { CoreContext.TenantManager.SetCurrentTenant(tenant); SecurityContext.AuthenticateMe(userGuid); return(WebItemSecurity.IsAvailableForUser(WebItemManager.CRMProductID.ToString(), SecurityContext.CurrentAccount.ID) ? apiHelper.SearchCrmEmails(term, maxCountPerSystem) : new List <string>()); }), Task.Run(() => { CoreContext.TenantManager.SetCurrentTenant(tenant); SecurityContext.AuthenticateMe(userGuid); return(WebItemSecurity.IsAvailableForUser(WebItemManager.PeopleProductID.ToString(), SecurityContext.CurrentAccount.ID) ? apiHelper.SearchPeopleEmails(term, 0, maxCountPerSystem) : new List <string>()); }) }; try { var taskArray = taskList.ToArray <Task>(); Task.WaitAll(taskArray, timeout); watch.Stop(); } catch (AggregateException e) { watch.Stop(); var errorText = new StringBuilder("SearchEmails: \nThe following exceptions have been thrown by WaitAll():"); foreach (var t in e.InnerExceptions) { errorText .AppendFormat("\n-------------------------------------------------\n{0}", t); } _log.Error(errorText.ToString()); } contacts = taskList.Aggregate(contacts, (current, task) => !task.IsFaulted && task.IsCompleted && !task.IsCanceled ? current.Concat(task.Result).ToList() : current) .Distinct(equality) .ToList(); _log.Debug("SearchEmails (term = '{0}'): {1} sec / {2} items", term, watch.Elapsed.TotalSeconds, contacts.Count); return(contacts); }
public static List <string> GetListAdminModules(this UserInfo ui, Tenant tenant) { var products = WebItemManager.Instance.GetItemsAll().Where(i => i is IProduct || i.ID == WebItemManager.MailProductID); return((from product in products where WebItemSecurity.IsProductAdministrator(tenant, product.ID, ui.ID) select product.ProductClassName).ToList()); }
protected bool IsAdmin() { return(WebItemSecurity.IsProductAdministrator(WebItemManager.PeopleProductID, SecurityContext.CurrentAccount.ID)); }
public object IsProductAdministrator(Guid productid, Guid userid) { var result = WebItemSecurity.IsProductAdministrator(productid, userid); return(new { ProductId = productid, UserId = userid, Administrator = result, }); }
public static bool IsAdministrator(Guid userId) { return(CoreContext.UserManager.IsUserInGroup(userId, Constants.GroupAdmin.ID) || WebItemSecurity.IsProductAdministrator(EngineFactory.ProductId, userId)); }
public static bool IsCrmAvailable() { return(WebItemSecurity.IsAvailableForMe(WebItemManager.CRMProductID)); }
public IEnumerable <EmployeeWraperFull> GetByFilter(EmployeeStatus?employeeStatus, Guid?groupId, EmployeeActivationStatus?activationStatus, EmployeeType?employeeType, bool?isAdministrator) { if (CoreContext.Configuration.Personal) { throw new MethodAccessException("Method not available on personal.onlyoffice.com"); } var isAdmin = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).IsAdmin() || WebItemSecurity.IsProductAdministrator(WebItemManager.PeopleProductID, SecurityContext.CurrentAccount.ID); var status = isAdmin ? EmployeeStatus.All : EmployeeStatus.Default; if (employeeStatus != null) { switch (employeeStatus) { case EmployeeStatus.Terminated: case EmployeeStatus.All: status = isAdmin ? (EmployeeStatus)employeeStatus : EmployeeStatus.Default; break; default: status = (EmployeeStatus)employeeStatus; break; } } var users = String.IsNullOrEmpty(_context.FilterValue) ? CoreContext.UserManager.GetUsers(status).AsEnumerable() : CoreContext.UserManager.Search(_context.FilterValue, status).AsEnumerable(); if (groupId != null && !groupId.Equals(Guid.Empty)) { users = users.Where(x => CoreContext.UserManager.IsUserInGroup(x.ID, (Guid)groupId)); } if (activationStatus != null) { users = activationStatus == EmployeeActivationStatus.Activated ? users.Where(x => x.ActivationStatus == EmployeeActivationStatus.Activated) : users.Where(x => x.ActivationStatus == EmployeeActivationStatus.NotActivated || x.ActivationStatus == EmployeeActivationStatus.Pending); } if (employeeType != null) { switch (employeeType) { case EmployeeType.User: users = users.Where(x => !x.IsVisitor()); break; case EmployeeType.Visitor: users = users.Where(x => x.IsVisitor()); break; } } if (isAdministrator.HasValue && isAdministrator.Value) { users = users.Where(x => x.IsAdmin() || x.GetListAdminModules().Any()); } _context.TotalCount = users.Count(); users = _context.SortDescending ? users.OrderByDescending(r => r.DisplayUserName()) : users.OrderBy(r => r.DisplayUserName()); users = users.Skip((int)_context.StartIndex).Take((int)_context.Count - 1); _context.SetDataSorted(); _context.SetDataPaginated(); return(users.Select(x => new EmployeeWraperFull(x, _context)).ToSmartList()); }
public static bool IsPeopleAvailable() { return(WebItemSecurity.IsAvailableForMe(WebItemManager.PeopleProductID)); }
protected void Page_Load(object sender, EventArgs e) { CurrentUser = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); Page.RegisterStyle("~/skins/page_default.less"); var defaultPageSettings = SettingsManager.Instance.LoadSettings <StudioDefaultPageSettings>(TenantProvider.CurrentTenantID); if (defaultPageSettings != null && defaultPageSettings.DefaultProductID != Guid.Empty) { if (defaultPageSettings.DefaultProductID == defaultPageSettings.FeedModuleID && !CurrentUser.IsOutsider()) { Context.Response.Redirect("feed.aspx"); } var products = WebItemManager.Instance.GetItemsAll <IProduct>(); foreach (var p in products) { if (p.ID.Equals(defaultPageSettings.DefaultProductID)) { var productInfo = WebItemSecurity.GetSecurityInfo(p.ID.ToString()); if (productInfo.Enabled && WebItemSecurity.IsAvailableForUser(p.ID.ToString(), CurrentUser.ID)) { Context.Response.Redirect(p.StartURL); } } } } Master.DisabledSidePanel = true; Title = Resources.Resource.MainPageTitle.HtmlEncode(); defaultListProducts = WebItemManager.Instance.GetItems(Web.Core.WebZones.WebZoneType.StartProductList); _showDocs = (Product)defaultListProducts.Find(r => r.ID == WebItemManager.DocumentsProductID); if (_showDocs != null) { defaultListProducts.RemoveAll(r => r.ID == _showDocs.ProductID); } var mailProduct = WebItemManager.Instance[WebItemManager.MailProductID]; if (mailProduct != null && !mailProduct.IsDisabled()) { mailProduct.Context.LargeIconFileName = "product_logolarge.png"; defaultListProducts.Add(mailProduct); } var priority = new Dictionary <Guid, Int32>() { { WebItemManager.ProjectsProductID, 0 }, { WebItemManager.CRMProductID, 1 }, { WebItemManager.MailProductID, 2 }, { WebItemManager.PeopleProductID, 3 }, { WebItemManager.CommunityProductID, 4 } }; defaultListProducts = defaultListProducts.OrderBy(p => (priority.Keys.Contains(p.ID) ? priority[p.ID] : 10)).ToList(); if (CoreContext.Configuration.PartnerHosted) { IsAutorizePartner = false; var partner = CoreContext.PaymentManager.GetApprovedPartner(); if (partner != null) { IsAutorizePartner = !string.IsNullOrEmpty(partner.AuthorizedKey); Partner = partner; } } }
public static bool IsCalndarAvailable() { return(WebItemSecurity.IsAvailableForMe(WebItemManager.CalendarProductID)); }
protected void Page_Load(object sender, EventArgs e) { CurrentUser = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); Page.RegisterStyle("~/skins/page_default.less"); var defaultPageSettings = StudioDefaultPageSettings.Load(); if (defaultPageSettings != null && defaultPageSettings.DefaultProductID != Guid.Empty) { if (defaultPageSettings.DefaultProductID == defaultPageSettings.FeedModuleID && !CurrentUser.IsOutsider()) { Response.Redirect("Feed.aspx", true); } var webItem = WebItemManager.Instance[defaultPageSettings.DefaultProductID]; if (webItem != null && webItem.Visible) { var securityInfo = WebItemSecurity.GetSecurityInfo(defaultPageSettings.DefaultProductID.ToString()); if (securityInfo.Enabled && WebItemSecurity.IsAvailableForMe(defaultPageSettings.DefaultProductID)) { var url = webItem.StartURL; if (Request.DesktopApp()) { url += "?desktop=true"; if (!string.IsNullOrEmpty(Request["first"])) { url += "&first=true"; } } Response.Redirect(url, true); } } } Master.DisabledSidePanel = true; Title = Resource.MainPageTitle; defaultListProducts = WebItemManager.Instance.GetItems(Web.Core.WebZones.WebZoneType.StartProductList); _showDocs = (Product)defaultListProducts.Find(r => r.ID == WebItemManager.DocumentsProductID); if (_showDocs != null) { defaultListProducts.RemoveAll(r => r.ID == _showDocs.ProductID); } var mailProduct = WebItemManager.Instance[WebItemManager.MailProductID]; if (mailProduct != null && !mailProduct.IsDisabled()) { defaultListProducts.Add(mailProduct); } var calendarProduct = WebItemManager.Instance[WebItemManager.CalendarProductID]; if (calendarProduct != null && !calendarProduct.IsDisabled()) { defaultListProducts.Add(calendarProduct); } var talkProduct = WebItemManager.Instance[WebItemManager.TalkProductID]; if (talkProduct != null && !talkProduct.IsDisabled()) { defaultListProducts.Add(talkProduct); } var priority = GetStartProductsPriority(); defaultListProducts = defaultListProducts .Where(p => priority.Keys.Contains(p.ID)) .OrderBy(p => priority[p.ID]) .ToList(); CustomNavigationItems = CustomNavigationSettings.Load().Items.Where(x => x.ShowOnHomePage); ProductsCount = defaultListProducts.Count() + CustomNavigationItems.Count() + (TenantExtra.EnableControlPanel ? 1 : 0); ResetCacheKey = ConfigurationManagerExtension.AppSettings["web.client.cache.resetkey"] ?? ""; }
public static bool IsAdministrator() { return(CoreContext.UserManager.IsUserInGroup(SecurityContext.CurrentAccount.ID, ASC.Core.Users.Constants.GroupAdmin.ID) || WebItemSecurity.IsProductAdministrator(CommunityProduct.ID, SecurityContext.CurrentAccount.ID)); }
public List <MailTag> GetTagsList(int id_tenant, string id_user, bool mail_only) { var tags = new Dictionary <int, MailTag>(); using (var db = GetDb()) { db.ExecuteList(new SqlQuery(MAIL_TAG) .Select(TagFields.id, TagFields.name, TagFields.style, TagFields.addresses, TagFields.count, TagFields.crm_id) .Where(GetUserWhere(id_user, id_tenant))) .ForEach(r => tags.Add(0 < Convert.ToInt32(r[5]) ? -Convert.ToInt32(r[5]) : Convert.ToInt32(r[0]), new MailTag((0 < Convert.ToInt32(r[5]) && !mail_only) ? -Convert.ToInt32(r[5]) : Convert.ToInt32(r[0]) , (string)r[1] , !string.IsNullOrEmpty(r[3].ToString()) ? r[3].ToString().Split(';').ToList() : new List <string>() , ConvertToString(r[2]) , Convert.ToInt32(r[4]))) ); } if (mail_only) { return(tags.Values.Where(p => p.Name != "").OrderByDescending(p => p.Id).ToList()); } #region Set up connection to CRM sequrity CoreContext.TenantManager.SetCurrentTenant(id_tenant); SecurityContext.AuthenticateMe(CoreContext.Authentication.GetAccountByID(new Guid(id_user))); if (!WebItemSecurity.IsAvailableForUser(WebItemManager.CRMProductID.ToString(), SecurityContext.CurrentAccount.ID)) { return(tags.Values.Where(p => p.Name != "").OrderByDescending(p => p.Id).ToList()); } #endregion using (var db = new DbManager("crm")) { var q = new SqlQuery(CRM_TAG + " t") .Select("t." + CrmTagFields.id, "t." + CrmTagFields.title) .Where(Exp.Eq("t." + CrmTagFields.tenant_id, id_tenant)) .Where(Exp.Eq("t." + CrmTagFields.entity_type, CRM_CONTACT_ENTITY_TYPE)); var crm_tags = db.ExecuteList(q) .ConvertAll(r => new MailTag(-Convert.ToInt32(r[0]) , (string)r[1] , new List <string>() , "" , 0)); foreach (var tag in crm_tags) { if (tags.ContainsKey(tag.Id)) { tags[tag.Id].Name = tag.Name; } else { tags.Add(tag.Id, tag); } } } return(tags.Values.Where(t => t.Name != "").OrderByDescending(p => p.Id).ToList()); }
private void RegisterClientScript() { var isRetina = TenantLogoManager.IsRetina(HttpContext.Current.Request); Page.RegisterBodyScripts("~/UserControls/Management/AccessRights/js/accessrights.js") .RegisterStyle("~/UserControls/Management/AccessRights/css/accessrights.less"); var curTenant = CoreContext.TenantManager.GetCurrentTenant(); var currentOwner = CoreContext.UserManager.GetUsers(curTenant.OwnerId); var admins = WebItemSecurity.GetProductAdministrators(Guid.Empty).ToList(); admins = admins .GroupBy(admin => admin.ID) .Select(group => group.First()) .Where(admin => admin.ID != currentOwner.ID) .SortByUserName(); InitLdapRights(); var sb = new StringBuilder(); sb.AppendFormat("ownerId = \"{0}\";", curTenant.OwnerId); sb.AppendFormat("adminList = {0};", JsonConvert.SerializeObject(admins.ConvertAll(u => new { id = u.ID, smallFotoUrl = u.GetSmallPhotoURL(), bigFotoUrl = isRetina ? u.GetBigPhotoURL() : "", displayName = u.DisplayUserName(), title = u.Title.HtmlEncode(), userUrl = CommonLinkUtility.GetUserProfile(u.ID), accessList = GetAccessList(u.ID, WebItemSecurity.IsProductAdministrator(Guid.Empty, u.ID)), ldap = LdapRights.Contains(u.ID.ToString()) }))); sb.AppendFormat("imageHelper = {0};", JsonConvert.SerializeObject(new { PeopleImgSrc = WebImageSupplier.GetAbsoluteWebPath("user_12.png"), GroupImgSrc = WebImageSupplier.GetAbsoluteWebPath("group_12.png"), TrashImgSrc = WebImageSupplier.GetAbsoluteWebPath("trash_12.png"), TrashImgTitle = Resource.DeleteButton })); var managementPage = Page as Studio.Management; var tenantAccess = managementPage != null ? managementPage.TenantAccess : TenantAccessSettings.Load(); if (!tenantAccess.Anyone) { var productItemList = GetProductItemListForSerialization(); foreach (var productItem in productItemList.Where(productItem => !productItem.CanNotBeDisabled)) { sb.AppendFormat("ASC.Settings.AccessRights.initProduct('{0}');", Convert.ToBase64String( Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(productItem)))); } } sb.AppendFormat("ASC.Settings.AccessRights.init({0});", JsonConvert.SerializeObject(Products.Select(p => p.GetSysName()).ToArray())); Page.RegisterInlineScript(sb.ToString()); }
private static void NotifyClientRegisterCallback(Context context, INotifyClient client) { #region url correction var absoluteUrl = new SendInterceptorSkeleton( "Web.UrlAbsoluter", InterceptorPlace.MessageSend, InterceptorLifetime.Global, (r, p) => { if (r != null && r.CurrentMessage != null && r.CurrentMessage.ContentType == Pattern.HTMLContentType) { var body = r.CurrentMessage.Body; body = urlReplacer.Replace(body, m => { var url = m.Groups["url"].Value; var ind = m.Groups["url"].Index - m.Index; return(string.IsNullOrEmpty(url) && ind > 0 ? m.Value.Insert(ind, CommonLinkUtility.GetFullAbsolutePath(string.Empty)) : m.Value.Replace(url, CommonLinkUtility.GetFullAbsolutePath(url))); }); body = textileLinkReplacer.Replace(body, m => { var url = m.Groups["link"].Value; var ind = m.Groups["link"].Index - m.Index; return(string.IsNullOrEmpty(url) && ind > 0 ? m.Value.Insert(ind, CommonLinkUtility.GetFullAbsolutePath(string.Empty)) : m.Value.Replace(url, CommonLinkUtility.GetFullAbsolutePath(url))); }); r.CurrentMessage.Body = body; } return(false); }); client.AddInterceptor(absoluteUrl); #endregion #region security and culture var securityAndCulture = new SendInterceptorSkeleton( "ProductSecurityInterceptor", InterceptorPlace.DirectSend, InterceptorLifetime.Global, (r, p) => { try { // culture var u = ASC.Core.Users.Constants.LostUser; if (32 <= r.Recipient.ID.Length) { var guid = default(Guid); try { guid = new Guid(r.Recipient.ID); } catch (FormatException) { } catch (OverflowException) { } if (guid != default(Guid)) { u = CoreContext.UserManager.GetUsers(guid); } } if (ASC.Core.Users.Constants.LostUser.Equals(u)) { u = CoreContext.UserManager.GetUserByEmail(r.Recipient.ID); } if (ASC.Core.Users.Constants.LostUser.Equals(u)) { u = CoreContext.UserManager.GetUserByUserName(r.Recipient.ID); } if (!ASC.Core.Users.Constants.LostUser.Equals(u)) { var culture = !string.IsNullOrEmpty(u.CultureName) ? u.GetCulture() : CoreContext.TenantManager.GetCurrentTenant().GetCulture(); Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; // security var tag = r.Arguments.Find(a => a.Tag == CommonTags.ModuleID); var productId = tag != null ? (Guid)tag.Value : Guid.Empty; if (productId == Guid.Empty) { tag = r.Arguments.Find(a => a.Tag == CommonTags.ProductID); productId = tag != null ? (Guid)tag.Value : Guid.Empty; } if (productId == Guid.Empty) { productId = (Guid)(CallContext.GetData("asc.web.product_id") ?? Guid.Empty); } if (productId != Guid.Empty && productId != new Guid("f4d98afdd336433287783c6945c81ea0") /* ignore people product */) { return(!WebItemSecurity.IsAvailableForUser(productId.ToString(), u.ID)); } } var tagCulture = r.Arguments.FirstOrDefault(a => a.Tag == CommonTags.Culture); if (tagCulture != null) { var culture = CultureInfo.GetCultureInfo((string)tagCulture.Value); Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; } } catch (Exception error) { LogManager.GetLogger(typeof(NotifyConfiguration)).Error(error); } return(false); }); client.AddInterceptor(securityAndCulture); #endregion #region white label correction var whiteLabel = new SendInterceptorSkeleton( "WhiteLabelInterceptor", InterceptorPlace.MessageSend, InterceptorLifetime.Global, (r, p) => { try { var tags = r.Arguments; var logoTextTag = tags.FirstOrDefault(a => a.Tag == Constants.LetterLogoText); var logoText = logoTextTag != null ? (String)logoTextTag.Value : string.Empty; if (!string.IsNullOrEmpty(logoText)) { var body = r.CurrentMessage.Body .Replace(string.Format("${{{0}}}", Constants.LetterLogoTextTM), logoText) .Replace(string.Format("${{{0}}}", Constants.LetterLogoText), logoText); r.CurrentMessage.Body = body; } } catch (Exception error) { LogManager.GetLogger(typeof(NotifyConfiguration)).Error(error); } return(false); }); client.AddInterceptor(whiteLabel); #endregion }
public object SaveSettings(bool anyone, bool registerUsers) { try { SecurityContext.DemandPermissions(SecutiryConstants.EditPortalSettings); var currentTenantQuota = CoreContext.TenantManager.GetTenantQuota(TenantProvider.CurrentTenantID); var enabled = SetupInfo.IsVisibleSettings("PublicPortal") && (currentTenantQuota.Free || currentTenantQuota.NonProfit || currentTenantQuota.Trial) && !currentTenantQuota.Open; if (!enabled) { throw new SecurityException(Resource.PortalAccessSettingsTariffException); } var tenant = CoreContext.TenantManager.GetCurrentTenant(); var currentSettings = TenantAccessSettings.Load(); //do nothing if no changes detected if (currentSettings.Anyone != anyone) { var items = WebItemManager.Instance.GetItemsAll(); if (anyone) { var openQuota = CoreContext.TenantManager.GetTenantQuotas(true).FirstOrDefault(q => q.Open); SetQuota(openQuota); foreach (var item in items) { WebItemSecurity.SetSecurity(item.ID.ToString(), item.ID != WebItemManager.CRMProductID, null); //disable crm product } new TenantAccessSettings { Anyone = true, RegisterUsersImmediately = registerUsers }.Save(); new StudioTrustedDomainSettings { InviteUsersAsVisitors = false }.Save(); new StudioAdminMessageSettings { Enable = true }.Save(); IPRestrictionsService.Save(new List <string>(), TenantProvider.CurrentTenantID); tenant.TrustedDomainsType = registerUsers ? TenantTrustedDomainsType.All : TenantTrustedDomainsType.None; CoreContext.TenantManager.SaveTenant(tenant); } else { var freeQuota = CoreContext.TenantManager.GetTenantQuotas(true).FirstOrDefault(q => q.Id == Tariff.CreateDefault().QuotaId); SetQuota(freeQuota); new TenantAccessSettings { Anyone = false, RegisterUsersImmediately = false }.Save(); new StudioTrustedDomainSettings { InviteUsersAsVisitors = false }.Save(); new StudioAdminMessageSettings { Enable = false }.Save(); foreach (var item in items) { WebItemSecurity.SetSecurity(item.ID.ToString(), true, null); } tenant.TrustedDomainsType = TenantTrustedDomainsType.None; CoreContext.TenantManager.SaveTenant(tenant); } MessageService.Send(HttpContext.Current.Request, MessageAction.PortalAccessSettingsUpdated); } else if (anyone && currentSettings.RegisterUsersImmediately != registerUsers) { new TenantAccessSettings { Anyone = true, RegisterUsersImmediately = registerUsers }.Save(); tenant.TrustedDomainsType = registerUsers ? TenantTrustedDomainsType.All : TenantTrustedDomainsType.None; CoreContext.TenantManager.SaveTenant(tenant); } return(new { Status = 1, Message = Resource.SuccessfullySaveSettingsMessage }); } catch (Exception e) { return(new { Status = 0, Message = e.Message.HtmlEncode() }); } }
public FileSecurityCommon(UserManager userManager, WebItemSecurity webItemSecurity) { UserManager = userManager; WebItemSecurity = webItemSecurity; }
public List <MailTag> GetTags(int tenant, string user, bool mailOnly) { var tags = new Dictionary <int, MailTag>(); using (var db = GetDb()) { db.ExecuteList(new SqlQuery(TagTable.name) .Select(TagTable.Columns.id, TagTable.Columns.name, TagTable.Columns.style, TagTable.Columns.addresses, TagTable.Columns.count, TagTable.Columns.crm_id) .Where(GetUserWhere(user, tenant))) .ForEach(r => tags.Add(0 < Convert.ToInt32(r[5]) ? -Convert.ToInt32(r[5]) : Convert.ToInt32(r[0]), new MailTag( (0 < Convert.ToInt32(r[5]) && !mailOnly) ? -Convert.ToInt32(r[5]) : Convert.ToInt32(r[0]) , (string)r[1] , !string.IsNullOrEmpty(r[3].ToString()) ? r[3].ToString().Split(';').ToList() : new List <string>() , ConvertToString(r[2]) , Convert.ToInt32(r[4]))) ); } if (mailOnly) { return(tags.Values.Where(p => p.Name != "").OrderByDescending(p => p.Id).ToList()); } //TODO: Move to crm api if (!WebItemSecurity.IsAvailableForUser(WebItemManager.CRMProductID.ToString(), SecurityContext.CurrentAccount.ID)) { return(tags.Values.Where(p => p.Name != "").OrderByDescending(p => p.Id).ToList()); } const string crm_tag_alias = "t"; using (var db = new DbManager("crm")) { var q = new SqlQuery(CrmTagTable.name.Alias(crm_tag_alias)) .Select(CrmTagTable.Columns.id.Prefix(crm_tag_alias), CrmTagTable.Columns.title.Prefix(crm_tag_alias)) .Where(CrmTagTable.Columns.tenant_id.Prefix(crm_tag_alias), tenant) .Where(CrmTagTable.Columns.entity_type.Prefix(crm_tag_alias), CRM_CONTACT_ENTITY_TYPE); var crmTags = db.ExecuteList(q) .ConvertAll(r => new MailTag(-Convert.ToInt32(r[0]) , (string)r[1] , new List <string>() , "" , 0)); foreach (var tag in crmTags) { if (tags.ContainsKey(tag.Id)) { tags[tag.Id].Name = tag.Name; } else { tags.Add(tag.Id, tag); } } } return(tags.Values.Where(t => t.Name != "").OrderByDescending(p => p.Id).ToList()); }
public virtual bool VisibleFor(Feed feed, object data, Guid userId) { return(WebItemSecurity.IsAvailableForUser(ProductID, userId)); }
protected void Page_Load(object sender, EventArgs e) { if (UserProfileHelper == null) { UserProfileHelper = new ProfileHelper(SecurityContext.CurrentAccount.ID.ToString()); } UserInfo = UserProfileHelper.UserInfo; ShowSocialLogins = UserInfo.IsMe(); IsAdmin = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).IsAdmin() || WebItemSecurity.IsProductAdministrator(WebItemManager.PeopleProductID, SecurityContext.CurrentAccount.ID); IsVisitor = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).IsVisitor(); if (!IsAdmin && (UserInfo.Status != EmployeeStatus.Active)) { Response.Redirect(CommonLinkUtility.GetFullAbsolutePath("~/products/people/"), true); } Role = GetRole(); Actions = new AllowedActions(UserInfo); LdapFields = ASC.ActiveDirectory.Base.Settings.LdapSettings.GetImportedFields; HappyBirthday = CheckHappyBirthday(); ContactPhones.DataSource = UserProfileHelper.Phones; ContactPhones.DataBind(); ContactEmails.DataSource = UserProfileHelper.Emails; ContactEmails.DataBind(); ContactMessengers.DataSource = UserProfileHelper.Messengers; ContactMessengers.DataBind(); ContactSoccontacts.DataSource = UserProfileHelper.Contacts; ContactSoccontacts.DataBind(); _deleteProfileContainer.Options.IsPopup = true; Page.RegisterStyle("~/UserControls/Users/UserProfile/css/userprofilecontrol_style.less") .RegisterBodyScripts(VirtualPathUtility.ToAbsolute("~/UserControls/Users/UserProfile/js/userprofilecontrol.js")); if (Actions.AllowEdit) { _editControlsHolder.Controls.Add(LoadControl(PwdTool.Location)); } if (Actions.AllowEdit || (UserInfo.IsOwner() && IsAdmin)) { var control = (UserEmailChange)LoadControl(UserEmailChange.Location); control.UserInfo = UserInfo; control.RegisterStylesAndScripts = false; userEmailChange.Controls.Add(control); } if (ShowSocialLogins && AccountLinkControl.IsNotEmpty) { var accountLink = (AccountLinkControl)LoadControl(AccountLinkControl.Location); accountLink.ClientCallback = "loginCallback"; accountLink.SettingsView = true; _accountPlaceholder.Controls.Add(accountLink); } var emailControl = (UserEmailControl)LoadControl(UserEmailControl.Location); emailControl.User = UserInfo; emailControl.Viewer = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); _phEmailControlsHolder.Controls.Add(emailControl); var photoControl = (LoadPhotoControl)LoadControl(LoadPhotoControl.Location); photoControl.User = UserInfo; loadPhotoWindow.Controls.Add(photoControl); if (UserInfo.IsMe() && SetupInfo.EnabledCultures.Count > 1) { _phLanguage.Controls.Add(LoadControl(UserLanguage.Location)); } if ((UserInfo.IsLDAP() && !String.IsNullOrEmpty(UserInfo.MobilePhone)) || !String.IsNullOrEmpty(UserInfo.MobilePhone) || UserInfo.IsMe()) { ShowPrimaryMobile = true; if (Actions.AllowEdit && (!UserInfo.IsLDAP() || UserInfo.IsLDAP() && !LdapFields.Contains(LdapMapping.MobilePhoneAttribute))) { var changeMobile = (ChangeMobileNumber)LoadControl(ChangeMobileNumber.Location); changeMobile.User = UserInfo; ChangeMobileHolder.Controls.Add(changeMobile); } } if (TfaAppAuthSettings.IsVisibleSettings && TfaAppAuthSettings.Enable && TfaAppUserSettings.EnableForUser(UserInfo.ID) && (UserInfo.IsMe() || IsAdmin)) { ShowTfaAppSettings = true; if (UserInfo.IsMe() || IsAdmin) { var resetApp = (ResetAppDialog)LoadControl(ResetAppDialog.Location); resetApp.User = UserInfo; _backupCodesPlaceholder.Controls.Add(resetApp); } if (UserInfo.IsMe()) { var showBackup = (ShowBackupCodesDialog)LoadControl(ShowBackupCodesDialog.Location); showBackup.User = UserInfo; _backupCodesPlaceholder.Controls.Add(showBackup); } } if (UserInfo.BirthDate.HasValue) { switch (HappyBirthday) { case 0: BirthDayText = Resource.DrnToday; break; case 1: BirthDayText = Resource.DrnTomorrow; break; case 2: BirthDayText = Resource.In + " " + DateTimeExtension.Yet(2); break; case 3: BirthDayText = Resource.In + " " + DateTimeExtension.Yet(3); break; default: BirthDayText = String.Empty; break; } } if (UserInfo.Status != EmployeeStatus.Terminated) { Groups = CoreContext.UserManager.GetUserGroups(UserInfo.ID).ToList(); } }