private List <ITagValue> CreateArgs(string region, string url)
        {
            var args = new List <ITagValue>()
            {
                new TagValue(Tags.RegionName, TransferResourceHelper.GetRegionDescription(region)),
                new TagValue(Tags.PortalUrl, url)
            };

            if (!string.IsNullOrEmpty(url))
            {
                args.Add(new TagValue(CommonTags.VirtualRootPath, url));
                args.Add(new TagValue(CommonTags.ProfileUrl, url + CommonLinkUtility.GetMyStaff()));
                args.Add(new TagValue(CommonTags.LetterLogo, TenantLogoManager.GetLogoDark(true)));
            }
            return(args);
        }
Exemplo n.º 2
0
        public static string GetPartUrl(PersonalPart part)
        {
            switch (part)
            {
            case PersonalPart.Settings:
                return(CommonLinkUtility.GetAdministration(ManagementType.General));

            case PersonalPart.Backup:
                return(CommonLinkUtility.GetAdministration(ManagementType.Account));

            case PersonalPart.Profile:
                return(CommonLinkUtility.GetMyStaff());
            }

            return(CommonLinkUtility.GetDefault());
        }
        private static void BeforeTransferRequest(NotifyEngine sender, NotifyRequest request)
        {
            var aid   = Guid.Empty;
            var aname = string.Empty;

            if (SecurityContext.IsAuthenticated)
            {
                aid = SecurityContext.CurrentAccount.ID;
                if (CoreContext.UserManager.UserExists(aid))
                {
                    aname = CoreContext.UserManager.GetUsers(aid).DisplayUserName(false)
                            .Replace(">", "&#62")
                            .Replace("<", "&#60");
                }
            }

            IProduct product;
            IModule  module;

            CommonLinkUtility.GetLocationByRequest(out product, out module);
            if (product == null && CallContext.GetData("asc.web.product_id") != null)
            {
                product = WebItemManager.Instance[(Guid)CallContext.GetData("asc.web.product_id")] as IProduct;
            }

            var logoText   = TenantLogoManager.GetLogoText();
            var logoTextTM = String.Equals(logoText, TenantWhiteLabelSettings.DefaultLogo, StringComparison.Ordinal)
                ? String.Format("{0}™", logoText.ToUpper())
                : logoText;

            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.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));
            request.Arguments.Add(new TagValue(CommonTags.ProductUrl, CommonLinkUtility.GetFullAbsolutePath(product != null ? product.StartURL : "~")));
            request.Arguments.Add(new TagValue(CommonTags.DateTime, TenantUtil.DateTimeNow()));
            request.Arguments.Add(new TagValue(CommonTags.Helper, new PatternHelper()));
            request.Arguments.Add(new TagValue(CommonTags.RecipientID, Context.SYS_RECIPIENT_ID));
            request.Arguments.Add(new TagValue(CommonTags.RecipientSubscriptionConfigURL, CommonLinkUtility.GetMyStaff()));
            request.Arguments.Add(new TagValue("Partner", GetPartnerInfo()));
            request.Arguments.Add(new TagValue(Constants.LetterLogo, CommonLinkUtility.GetFullAbsolutePath(TenantLogoManager.GetLogoDark(true))));
            request.Arguments.Add(new TagValue(Constants.LetterLogoText, logoText));
            request.Arguments.Add(new TagValue(Constants.LetterLogoTextTM, logoTextTM));
            request.Arguments.Add(new TagValue(Constants.MailWhiteLabelSettings, MailWhiteLabelSettings.Instance));

            if (!request.Arguments.Any(x => CommonTags.SendFrom.Equals(x.Tag)))
            {
                request.Arguments.Add(new TagValue(CommonTags.SendFrom, CoreContext.TenantManager.GetCurrentTenant().Name));
            }
        }
Exemplo n.º 4
0
        private UserInfo SyncLDAPUser(UserInfo ldapUserInfo, List <UserInfo> ldapUsers, out LdapChangeCollection changes, bool onlyGetChanges = false)
        {
            UserInfo result;

            changes = new LdapChangeCollection();

            UserInfo userToUpdate;

            var userBySid = CoreContext.UserManager.GetUserBySid(ldapUserInfo.Sid);

            if (Equals(userBySid, Constants.LostUser))
            {
                var userByEmail = CoreContext.UserManager.GetUserByEmail(ldapUserInfo.Email);

                if (Equals(userByEmail, Constants.LostUser))
                {
                    if (ldapUserInfo.Status != EmployeeStatus.Active)
                    {
                        if (onlyGetChanges)
                        {
                            changes.SetSkipUserChange(ldapUserInfo);
                        }

                        _log.DebugFormat("SyncUserLDAP(SID: {0}, Username: '******') ADD failed: Status is {2}",
                                         ldapUserInfo.Sid, ldapUserInfo.UserName,
                                         Enum.GetName(typeof(EmployeeStatus), ldapUserInfo.Status));

                        return(Constants.LostUser);
                    }

                    if (!TryAddLDAPUser(ldapUserInfo, onlyGetChanges, out result))
                    {
                        if (onlyGetChanges)
                        {
                            changes.SetSkipUserChange(ldapUserInfo);
                        }

                        return(Constants.LostUser);
                    }

                    if (onlyGetChanges)
                    {
                        changes.SetAddUserChange(result, _log);
                    }

                    if (!onlyGetChanges && LdapSettings.Load().SendWelcomeEmail&&
                        (ldapUserInfo.ActivationStatus != EmployeeActivationStatus.AutoGenerated))
                    {
                        var client = LdapNotifyHelper.StudioNotifyClient;

                        var confirmLink = CommonLinkUtility.GetConfirmationUrl(ldapUserInfo.Email, ConfirmType.EmailActivation);

                        client.SendNoticeToAsync(
                            NotifyConstants.ActionLdapActivation,
                            null,
                            new[] { new DirectRecipient(ldapUserInfo.Email, null, new[] { ldapUserInfo.Email }, false) },
                            new[] { ASC.Core.Configuration.Constants.NotifyEMailSenderSysName },
                            null,
                            new TagValue(NotifyConstants.TagUserName, ldapUserInfo.DisplayUserName()),
                            new TagValue(NotifyConstants.TagUserEmail, ldapUserInfo.Email),
                            new TagValue(NotifyConstants.TagMyStaffLink, CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.GetMyStaff())),
                            NotifyConstants.TagGreenButton(Resource.NotifyButtonJoin, confirmLink),
                            new TagValue(NotifyCommonTags.WithoutUnsubscribe, true));
                    }

                    return(result);
                }

                if (userByEmail.IsLDAP())
                {
                    if (ldapUsers == null || ldapUsers.Any(u => u.Sid.Equals(userByEmail.Sid)))
                    {
                        if (onlyGetChanges)
                        {
                            changes.SetSkipUserChange(ldapUserInfo);
                        }

                        _log.DebugFormat(
                            "SyncUserLDAP(SID: {0}, Username: '******') ADD failed: Another ldap user with email '{2}' already exists",
                            ldapUserInfo.Sid, ldapUserInfo.UserName, ldapUserInfo.Email);

                        return(Constants.LostUser);
                    }
                }

                userToUpdate = userByEmail;
            }
            else
            {
                userToUpdate = userBySid;
            }

            UpdateLdapUserContacts(ldapUserInfo, userToUpdate.Contacts);

            if (!NeedUpdateUser(userToUpdate, ldapUserInfo))
            {
                _log.DebugFormat("SyncUserLDAP(SID: {0}, Username: '******') No need to update, skipping", ldapUserInfo.Sid, ldapUserInfo.UserName);
                if (onlyGetChanges)
                {
                    changes.SetNoneUserChange(ldapUserInfo);
                }

                return(userBySid);
            }

            _log.DebugFormat("SyncUserLDAP(SID: {0}, Username: '******') Userinfo is outdated, updating", ldapUserInfo.Sid, ldapUserInfo.UserName);
            if (!TryUpdateUserWithLDAPInfo(userToUpdate, ldapUserInfo, onlyGetChanges, out result))
            {
                if (onlyGetChanges)
                {
                    changes.SetSkipUserChange(ldapUserInfo);
                }

                return(Constants.LostUser);
            }

            if (onlyGetChanges)
            {
                changes.SetUpdateUserChange(ldapUserInfo, result, _log);
            }

            return(result);
        }
        private static void BeforeTransferRequest(NotifyEngine sender, NotifyRequest request)
        {
            var aid    = Guid.Empty;
            var aname  = string.Empty;
            var tenant = CoreContext.TenantManager.GetCurrentTenant();

            if (SecurityContext.IsAuthenticated)
            {
                aid = SecurityContext.CurrentAccount.ID;
                var user = CoreContext.UserManager.GetUsers(tenant.TenantId, aid);
                if (CoreContext.UserManager.UserExists(user))
                {
                    aname = user.DisplayUserName(false)
                            .Replace(">", "&#62")
                            .Replace("<", "&#60");
                }
            }

            //TODOL httpContext
            CommonLinkUtility.GetLocationByRequest(tenant, out var product, out var module, null);
            if (product == null && CallContext.GetData("asc.web.product_id") != null)
            {
                product = WebItemManager.Instance[(Guid)CallContext.GetData("asc.web.product_id")] as IProduct;
            }

            var logoText = TenantWhiteLabelSettings.DefaultLogoText;

            if ((TenantExtra.Enterprise || CoreContext.Configuration.CustomMode) && !MailWhiteLabelSettings.Instance.IsDefault)
            {
                logoText = TenantLogoManager.GetLogoText();
            }

            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(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));
            request.Arguments.Add(new TagValue(CommonTags.ProductUrl, CommonLinkUtility.GetFullAbsolutePath(product != null ? product.StartURL : "~")));
            request.Arguments.Add(new TagValue(CommonTags.DateTime, TenantUtil.DateTimeNow()));
            request.Arguments.Add(new TagValue(CommonTags.RecipientID, Context.SYS_RECIPIENT_ID));
            request.Arguments.Add(new TagValue(CommonTags.ProfileUrl, CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.GetMyStaff())));
            request.Arguments.Add(new TagValue(CommonTags.HelpLink, CommonLinkUtility.GetHelpLink(false)));
            request.Arguments.Add(new TagValue(CommonTags.LetterLogoText, logoText));
            request.Arguments.Add(new TagValue(CommonTags.MailWhiteLabelSettings, MailWhiteLabelSettings.Instance));

            if (!request.Arguments.Any(x => CommonTags.SendFrom.Equals(x.Tag)))
            {
                request.Arguments.Add(new TagValue(CommonTags.SendFrom, tenant.Name));
            }

            AddLetterLogo(request);
        }
 private static string GetMyStaffLink()
 {
     return(CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.GetMyStaff()));
 }
Exemplo n.º 7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (SecurityContext.DemoMode || (CoreContext.TenantManager.GetCurrentTenant().Public&& !SecurityContext.CurrentAccount.IsAuthenticated))
            {
                Response.Redirect("~/default.aspx");
            }

            (this.Master as IStudioMaster).DisabledSidePanel = true;
            var _userInfo = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID);

            var type = Request["type"] ?? "";

            var            myToolsItems  = WebItemManager.Instance.GetItems(WebZoneType.MyTools);
            IRenderMyTools myToolsRender = null;

            foreach (var item in myToolsItems)
            {
                myToolsRender = WebItemManager.Instance[item.ID] as IRenderMyTools;
                if (myToolsRender != null && String.Equals(myToolsRender.ParameterName, type, StringComparison.InvariantCultureIgnoreCase))
                {
                    break;
                }

                myToolsRender = null;
            }

            #region top panel

            bool isDefault;
            var  enumType = typeof(MyStaffType).TryParseEnum <MyStaffType>(Request["type"] ?? "", MyStaffType.General, out isDefault);
            if (String.IsNullOrEmpty(Request["type"]))
            {
                isDefault = false;
            }


            //top panel
            ((StudioTemplate)this.Master).TopNavigationPanel.CustomTitle        = Resources.Resource.MyStaff;
            ((StudioTemplate)this.Master).TopNavigationPanel.CustomTitleURL     = CommonLinkUtility.GetMyStaff(MyStaffType.General);
            ((StudioTemplate)this.Master).TopNavigationPanel.CustomTitleIconURL = WebImageSupplier.GetAbsoluteWebPath("staff.gif");

            //profile
            ((StudioTemplate)this.Master).TopNavigationPanel.NavigationItems.Add(new NavigationItem()
            {
                Name     = Resources.Resource.Profile,
                URL      = CommonLinkUtility.GetMyStaff(MyStaffType.General),
                Selected = (enumType == MyStaffType.General && !isDefault)
            });


            //activity
            ((StudioTemplate)this.Master).TopNavigationPanel.NavigationItems.Add(new NavigationItem()
            {
                Name     = Resources.Resource.RecentActivity,
                URL      = CommonLinkUtility.GetMyStaff(MyStaffType.Activity),
                Selected = (enumType == MyStaffType.Activity)
            });

            //subscriptions
            ((StudioTemplate)this.Master).TopNavigationPanel.NavigationItems.Add(new NavigationItem()
            {
                Name     = Resources.Resource.Subscriptions,
                URL      = CommonLinkUtility.GetMyStaff(MyStaffType.Subscriptions),
                Selected = (enumType == MyStaffType.Subscriptions)
            });

            //Customisation
            ((StudioTemplate)this.Master).TopNavigationPanel.NavigationItems.Add(new NavigationItem()
            {
                Name     = Resources.Resource.Customization,
                URL      = CommonLinkUtility.GetMyStaff(MyStaffType.Customization),
                Selected = (enumType == MyStaffType.Customization)
            });

            foreach (var item in myToolsItems)
            {
                var render = WebItemManager.Instance[item.ID] as IRenderMyTools;
                if (render == null)
                {
                    continue;
                }

                ((StudioTemplate)this.Master).TopNavigationPanel.NavigationItems.Add(new NavigationItem()
                {
                    Name     = render.TabName,
                    URL      = CommonLinkUtility.GetMyStaff(render.ParameterName),
                    Selected = String.Equals(Request["type"] ?? "", render.ParameterName, StringComparison.InvariantCultureIgnoreCase)
                });
            }

            #endregion

            if (String.Equals(type, MyStaffType.Activity.ToString(), StringComparison.InvariantCultureIgnoreCase))
            {
                _myStaffContainer.BreadCrumbs.Add(new ASC.Web.Controls.BreadCrumb()
                {
                    Caption = Resources.Resource.RecentActivity
                });

                ClientScriptManager cs = Page.ClientScript;

                StringBuilder helpcstext = new StringBuilder();
                helpcstext.Append("<script type=text/javascript> var header = jq('.mainContainerClass>.containerHeaderBlock table td div').last();");
                helpcstext.Append("header.css('float', 'left');");
                helpcstext.Append("header.after('<div class=\"HelpCenterSwitcher title big\" id=\"QuestionForHelpActivityPortal\" title=\"" + String.Format(Resources.Resource.HelpQuestionActivityPortal) + "\"></div>');");
                helpcstext.Append("jq('#QuestionForHelpActivityPortal').click(function() {jq(this).helper({ BlockHelperID: 'AnswerForHelpActivityPortal' });}); </");
                helpcstext.Append("script>");
                cs.RegisterStartupScript(this.GetType(), "HelpScript", helpcstext.ToString());

                StringBuilder helptext = new StringBuilder();
                helptext.Append("<div id='AnswerForHelpActivityPortal' class='popup_helper'>");
                helptext.Append("<p>" + String.Format(Resources.Resource.HelpAnswerActivityPortal, "<br />", "<b>", "</b>") + "</p>");
                helptext.Append("</div>");
                _contentHolder.Controls.Add(new Literal()
                {
                    Text = helptext.ToString()
                });

                bool isFirst = true;
                foreach (var product in WebItemManager.Instance.GetItems(WebZoneType.All).OfType <IProduct>())
                {
                    if (product.Context != null && product.Context.UserActivityControlLoader != null)
                    {
                        StringBuilder sb = new StringBuilder();
                        sb.Append("<div id='studio_product_activityBox_" + product.ID + "' class='borderBase tintMedium clearFix' style='border-left:none; border-right:none; margin-top:-1px; padding:10px;'>");
                        sb.Append("<div class='headerBase' style='float:left; cursor:pointer;' onclick=\"StudioManager.ToggleProductActivity('" + product.ID + "');\">");
                        string logoURL = product.GetIconAbsoluteURL();
                        if (!String.IsNullOrEmpty(logoURL))
                        {
                            sb.Append("<img alt='' style='margin-right:5px;' align='absmiddle' src='" + logoURL + "'/>");
                        }
                        sb.Append(product.Name.HtmlEncode());
                        sb.Append("<img alt='' align='absmiddle' id='studio_activityProductState_" + product.ID + "' style='margin-left:15px;'  src='" + WebImageSupplier.GetAbsoluteWebPath(isFirst ? "collapse_down_dark.png" : "collapse_right_dark.png") + "'/>");
                        sb.Append("</div>");
                        sb.Append("</div>");
                        sb.Append("<div id=\"studio_product_activity_" + product.ID + "\" style=\"padding-left:40px; " + (isFirst ? "" : "display:none;") + " padding-top:20px;\">");

                        _contentHolder.Controls.Add(new Literal()
                        {
                            Text = sb.ToString()
                        });
                        var activityControl = product.Context.UserActivityControlLoader.LoadControl(_userInfo.ID);
                        _contentHolder.Controls.Add(activityControl);

                        sb = new StringBuilder();
                        sb.Append("</div>");
                        _contentHolder.Controls.Add(new Literal()
                        {
                            Text = sb.ToString()
                        });

                        isFirst = false;
                    }
                }
            }
            else if (String.Equals(type, MyStaffType.Subscriptions.ToString(), StringComparison.InvariantCultureIgnoreCase))
            {
                _myStaffContainer.BreadCrumbs.Add(new ASC.Web.Controls.BreadCrumb()
                {
                    Caption = Resources.Resource.Subscriptions
                });
                var userSubscriptions = LoadControl(UserSubscriptions.Location) as UserSubscriptions;
                _contentHolder.Controls.Add(userSubscriptions);
            }
            else if (String.Equals(type, MyStaffType.Customization.ToString(), StringComparison.InvariantCultureIgnoreCase))
            {
                _myStaffContainer.BreadCrumbs.Add(new ASC.Web.Controls.BreadCrumb()
                {
                    Caption = Resources.Resource.Customization
                });
                var userCustomisationControl = LoadControl(UserCustomisationControl.Location) as UserCustomisationControl;
                _contentHolder.Controls.Add(userCustomisationControl);
            }

            else if (myToolsRender != null)
            {
                _myStaffContainer.BreadCrumbs.Add(new ASC.Web.Controls.BreadCrumb()
                {
                    Caption = myToolsRender.TabName
                });
                var control = myToolsRender.LoadMyToolsControl(this);

                if (control is IFullScreenControl)
                {
                    _myStaffContainer.Visible = false;
                    (this.Master as IStudioMaster).ContentHolder.Controls.Add(control);
                }
                else
                {
                    _contentHolder.Controls.Add(control);
                }
            }
            else
            {
                _myStaffContainer.BreadCrumbs.Add(new ASC.Web.Controls.BreadCrumb()
                {
                    Caption = _userInfo.DisplayUserName(false)
                });

                var userProfileControl = LoadControl(UserProfileControl.Location) as UserProfileControl;
                userProfileControl.UserInfo    = _userInfo;
                userProfileControl.MyStaffMode = true;

                _contentHolder.Controls.Add(userProfileControl);
            }

            this.Title = HeaderStringHelper.GetPageTitle(Resources.Resource.MyStaff, null, null);
        }
Exemplo n.º 8
0
 private static string GetMyStaffLink()
 {
     return(CommonLinkUtility.GetMyStaff(MyStaffType.General));
 }
Exemplo n.º 9
0
 static object GetRecipientSubscriptionConfigURL()
 {
     return(CommonLinkUtility.GetFullAbsolutePath(
                CommonLinkUtility.GetMyStaff(MyStaffType.Subscriptions)));
 }