From ed2c2c948b57f0b51fa418c27edc70cbb7531189 Mon Sep 17 00:00:00 2001 From: SeanFarrow Date: Tue, 3 Jul 2012 09:27:11 -0700 Subject: [PATCH] #18625: Fixing "Remember Me" checkbox Work Item: 18625 --HG-- branch : 1.x --- .../Controllers/AccountController.cs | 4 +-- .../Modules/Orchard.Users/Views/LogOn.cshtml | 25 +++++++++++-------- .../Providers/FormsAuthenticationService.cs | 11 +++++--- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Users/Controllers/AccountController.cs b/src/Orchard.Web/Modules/Orchard.Users/Controllers/AccountController.cs index 56bc2990e..d22afd69d 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Controllers/AccountController.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Controllers/AccountController.cs @@ -82,14 +82,14 @@ namespace Orchard.Users.Controllers { [AlwaysAccessible] [SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings", Justification = "Needs to take same parameter type as Controller.Redirect()")] - public ActionResult LogOn(string userNameOrEmail, string password, string returnUrl) { + public ActionResult LogOn(string userNameOrEmail, string password, string returnUrl, bool rememberMe) { var user = ValidateLogOn(userNameOrEmail, password); if (!ModelState.IsValid) { var shape = _orchardServices.New.LogOn().Title(T("Log On").Text); return new ShapeResult(this, shape); } - _authenticationService.SignIn(user, false); + _authenticationService.SignIn(user, rememberMe); foreach (var userEventHandler in _userEventHandlers) { userEventHandler.LoggedIn(user); } diff --git a/src/Orchard.Web/Modules/Orchard.Users/Views/LogOn.cshtml b/src/Orchard.Web/Modules/Orchard.Users/Views/LogOn.cshtml index 7c4dbc7f5..eb6625545 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Views/LogOn.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Users/Views/LogOn.cshtml @@ -17,17 +17,20 @@
@T("Account Information")
    -
  1. - - @Html.TextBox("userNameOrEmail", "", new { id = "username-email", autofocus = "autofocus" }) - @Html.ValidationMessage("userNameOrEmail") -
  2. -
  3. - - @Html.Password("password") - @Html.ValidationMessage("password") -
  4. - +
  5. + + @Html.TextBox("userNameOrEmail", "", new { id = "username-email", autofocus = "autofocus" }) + @Html.ValidationMessage("userNameOrEmail") +
  6. +
  7. + + @Html.Password("password") + @Html.ValidationMessage("password") +
  8. +
  9. + @Html.CheckBox("rememberMe", new { id = "remember-me" }) +
+
} \ No newline at end of file diff --git a/src/Orchard/Security/Providers/FormsAuthenticationService.cs b/src/Orchard/Security/Providers/FormsAuthenticationService.cs index 27c09c994..9a5261a7b 100644 --- a/src/Orchard/Security/Providers/FormsAuthenticationService.cs +++ b/src/Orchard/Security/Providers/FormsAuthenticationService.cs @@ -20,8 +20,7 @@ namespace Orchard.Security.Providers { Logger = NullLogger.Instance; - // TEMP: who can say... - ExpirationTimeSpan = TimeSpan.FromHours(6); + ExpirationTimeSpan = TimeSpan.FromDays(30); } public ILogger Logger { get; set; } @@ -31,7 +30,7 @@ namespace Orchard.Security.Providers { public void SignIn(IUser user, bool createPersistentCookie) { var now = _clock.UtcNow.ToLocalTime(); var userData = Convert.ToString(user.Id); - + var ticket = new FormsAuthenticationTicket( 1 /*version*/, user.UserName, @@ -50,7 +49,11 @@ namespace Orchard.Security.Providers { if (FormsAuthentication.CookieDomain != null) { cookie.Domain = FormsAuthentication.CookieDomain; } - + + if (createPersistentCookie) { + cookie.Expires = ticket.Expiration; + } + var httpContext = _httpContextAccessor.Current(); httpContext.Response.Cookies.Add(cookie); _signedInUser = user;