Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. public class RedirectUserToChangedPassword : HttpRequestProcessor
  2. {
  3. private TimeSpan TimeSpanToExpirePassword { get; set; }
  4. private string ChangePasswordPageUrl { get; set; }
  5.  
  6. public override void Process(HttpRequestArgs args)
  7. {
  8. if (((Sitecore.Context.PageMode.IsNormal || Sitecore.Context.PageMode.IsPreview)
  9. && Sitecore.Context.Site != null
  10. //custom method: IsContentSite
  11. && Sitecore.Context.Site.IsContentSite())
  12. || Sitecore.Context.User == null
  13. || Sitecore.Context.User.IsAdministrator
  14. || args.Url == null
  15. || String.Equals(args.Url.FilePath, ChangePasswordPageUrl, StringComparison.CurrentCultureIgnoreCase))
  16. return;
  17.  
  18. var membershipUser = Membership.GetUser(Sitecore.Context.User.Name, false);
  19.  
  20. if (!HasPasswordExpired(membershipUser))
  21. return;
  22.  
  23. var queryString = new NameValueCollection();
  24. queryString.Add(Constants.Sitecore.ChangePassword.OriginalUrlKey, args.Url.FilePathWithQueryString);
  25.  
  26. //custom method: ToQueryString
  27. WebUtil.Redirect(ChangePasswordPageUrl + (ChangePasswordPageUrl.Contains("?") ? "&" : "?") + queryString.ToQueryString());
  28. }
  29.  
  30. private bool HasPasswordExpired(MembershipUser user)
  31. {
  32. return user.LastPasswordChangedDate.Add(TimeSpanToExpirePassword) <= DateTime.Now;
  33. }
  34. }
  35.  
  36. <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  37. <sitecore>
  38. <pipelines>
  39. <httpRequestBegin>
  40. <processor type="MyDll.CustomSitecore.Pipelines.HttpRequest.RedirectUserToChangedPassword, MyDll"
  41. patch:after="*[@type='Sitecore.Pipelines.HttpRequest.UserResolver, Sitecore.Kernel']">
  42. <TimeSpanToExpirePassword>00:00:01:00</TimeSpanToExpirePassword>
  43. <ChangePasswordPageUrl>/sitecore/shell/Applications/Security/ChangePassword/customchangepassword.aspx</ChangePasswordPageUrl>
  44. </processor>
  45. </httpRequestBegin>
  46. </pipelines>
  47. </sitecore>
  48. </configuration>
  49.  
  50. public class ChangePasswordPage : Sitecore.Shell.Applications.Security.ChangePassword.ChangePasswordPage
  51. {
  52. protected override void OnLoad(EventArgs e)
  53. {
  54. base.OnLoad(e);
  55. ChangePassword.ContinueButtonClick += ChangePassword_ContinueButtonClick;
  56. }
  57.  
  58. private void ChangePassword_ContinueButtonClick(object sender, EventArgs e)
  59. {
  60. Sitecore.Diagnostics.Assert.ArgumentNotNull(sender, "sender");
  61. Sitecore.Diagnostics.Assert.ArgumentNotNull(e, "e");
  62.  
  63. var originalUrl = Request.QueryString[Constants.Sitecore.ChangePassword.OriginalUrlKey];
  64. if (!originalUrl.IsNullOrEmpty())
  65. {
  66. WebUtil.Redirect(originalUrl);
  67. }
  68. else if (Sitecore.Context.User != null)
  69. {
  70. WebUtil.Redirect(Sitecore.Context.User.Profile.StartUrl);
  71. }
  72. else
  73. {
  74. WebUtil.RedirectToLoginPage();
  75. }
  76. }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement