Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class RedirectUserToChangedPassword : HttpRequestProcessor
- {
- private TimeSpan TimeSpanToExpirePassword { get; set; }
- private string ChangePasswordPageUrl { get; set; }
- public override void Process(HttpRequestArgs args)
- {
- if (((Sitecore.Context.PageMode.IsNormal || Sitecore.Context.PageMode.IsPreview)
- && Sitecore.Context.Site != null
- //custom method: IsContentSite
- && Sitecore.Context.Site.IsContentSite())
- || Sitecore.Context.User == null
- || Sitecore.Context.User.IsAdministrator
- || args.Url == null
- || String.Equals(args.Url.FilePath, ChangePasswordPageUrl, StringComparison.CurrentCultureIgnoreCase))
- return;
- var membershipUser = Membership.GetUser(Sitecore.Context.User.Name, false);
- if (!HasPasswordExpired(membershipUser))
- return;
- var queryString = new NameValueCollection();
- queryString.Add(Constants.Sitecore.ChangePassword.OriginalUrlKey, args.Url.FilePathWithQueryString);
- //custom method: ToQueryString
- WebUtil.Redirect(ChangePasswordPageUrl + (ChangePasswordPageUrl.Contains("?") ? "&" : "?") + queryString.ToQueryString());
- }
- private bool HasPasswordExpired(MembershipUser user)
- {
- return user.LastPasswordChangedDate.Add(TimeSpanToExpirePassword) <= DateTime.Now;
- }
- }
- <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
- <sitecore>
- <pipelines>
- <httpRequestBegin>
- <processor type="MyDll.CustomSitecore.Pipelines.HttpRequest.RedirectUserToChangedPassword, MyDll"
- patch:after="*[@type='Sitecore.Pipelines.HttpRequest.UserResolver, Sitecore.Kernel']">
- <TimeSpanToExpirePassword>00:00:01:00</TimeSpanToExpirePassword>
- <ChangePasswordPageUrl>/sitecore/shell/Applications/Security/ChangePassword/customchangepassword.aspx</ChangePasswordPageUrl>
- </processor>
- </httpRequestBegin>
- </pipelines>
- </sitecore>
- </configuration>
- public class ChangePasswordPage : Sitecore.Shell.Applications.Security.ChangePassword.ChangePasswordPage
- {
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
- ChangePassword.ContinueButtonClick += ChangePassword_ContinueButtonClick;
- }
- private void ChangePassword_ContinueButtonClick(object sender, EventArgs e)
- {
- Sitecore.Diagnostics.Assert.ArgumentNotNull(sender, "sender");
- Sitecore.Diagnostics.Assert.ArgumentNotNull(e, "e");
- var originalUrl = Request.QueryString[Constants.Sitecore.ChangePassword.OriginalUrlKey];
- if (!originalUrl.IsNullOrEmpty())
- {
- WebUtil.Redirect(originalUrl);
- }
- else if (Sitecore.Context.User != null)
- {
- WebUtil.Redirect(Sitecore.Context.User.Profile.StartUrl);
- }
- else
- {
- WebUtil.RedirectToLoginPage();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement