diff --git a/src/Orchard.Web/Modules/Orchard.Users/Controllers/AccountController.cs b/src/Orchard.Web/Modules/Orchard.Users/Controllers/AccountController.cs index 87a18ec00..920c15140 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Controllers/AccountController.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Controllers/AccountController.cs @@ -183,15 +183,23 @@ namespace Orchard.Users.Controllers { return View(new BaseViewModel()); } + public ActionResult ChallengeEmailSuccess() { + return View(new BaseViewModel()); + } + + public ActionResult ChallengeEmailFail() { + return View(new BaseViewModel()); + } + public ActionResult ChallengeEmail(string token) { var user = _membershipService.ValidateChallengeToken(token); if ( user != null ) { _authenticationService.SignIn(user, false /* createPersistentCookie */); - return View("ChallengeEmailSuccess"); + return RedirectToAction("ChallengeEmailSuccess"); } - return View("ChallengeEmailFail"); + return RedirectToAction("ChallengeEmailFail"); } protected override void OnActionExecuting(ActionExecutingContext filterContext) { diff --git a/src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs index 05119e766..dd1eda670 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs @@ -149,6 +149,22 @@ namespace Orchard.Users.Controllers { return RedirectToAction("Index"); } + public ActionResult SendChallengeEmail(int id) { + if ( !Services.Authorizer.Authorize(Permissions.ManageUsers, T("Not authorized to manage users")) ) + return new HttpUnauthorizedResult(); + + var user = Services.ContentManager.Get(id); + + if ( user != null ) { + string challengeToken = _membershipService.GetEncryptedChallengeToken(user.As()); + _membershipService.SendChallengeEmail(user.As(), Url.AbsoluteAction(() => Url.Action("ChallengeEmail", "Account", new {Area = "Orchard.Users", token = challengeToken}))); + } + + Services.Notifier.Information(T("Challenge email sent")); + + return RedirectToAction("Index"); + } + public ActionResult Approve(int id) { if ( !Services.Authorizer.Authorize(Permissions.ManageUsers, T("Not authorized to manage users")) ) return new HttpUnauthorizedResult(); diff --git a/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs b/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs index 046077d03..69149386d 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs @@ -134,31 +134,27 @@ namespace Orchard.Users.Services { public IUser GetUser(string username) { var lowerName = username == null ? "" : username.ToLower(); - var userRecord = _userRepository.Get(x => x.NormalizedUserName == lowerName); - if (userRecord == null) { - return null; - } - return _contentManager.Get(userRecord.Id); + return _contentManager.Query().Where(u => u.NormalizedUserName == lowerName).List().FirstOrDefault(); } public IUser ValidateUser(string userNameOrEmail, string password) { var lowerName = userNameOrEmail == null ? "" : userNameOrEmail.ToLower(); - var userRecord = _userRepository.Get(x => x.NormalizedUserName == lowerName); + var user = _contentManager.Query().Where(u => u.NormalizedUserName == lowerName).List().FirstOrDefault(); - if(userRecord == null) - userRecord = _userRepository.Get(x => x.Email == lowerName); + if(user == null) + user = _contentManager.Query().Where(u => u.Email == lowerName).List().FirstOrDefault(); - if (userRecord == null || ValidatePassword(userRecord, password) == false) + if ( user == null || ValidatePassword(user.As().Record, password) == false ) return null; - if ( userRecord.EmailStatus != UserStatus.Approved ) + if ( user.EmailStatus != UserStatus.Approved ) return null; - if ( userRecord.RegistrationStatus != UserStatus.Approved ) + if ( user.RegistrationStatus != UserStatus.Approved ) return null; - return _contentManager.Get(userRecord.Id); + return user; } public void SetPassword(IUser user, string password) { diff --git a/src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChallengeEmailFail.ascx b/src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChallengeEmailFail.ascx index dbbd4a223..647e83954 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChallengeEmailFail.ascx +++ b/src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChallengeEmailFail.ascx @@ -1,3 +1,3 @@ -<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> +<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %>

<%: Html.TitleForPage(T("Challenge Email").ToString()) %>

<%: T("Your email address could not be validated.") %>

diff --git a/src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChallengeEmailSuccess.ascx b/src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChallengeEmailSuccess.ascx index c2f9d0734..d7b8a4d1a 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChallengeEmailSuccess.ascx +++ b/src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChallengeEmailSuccess.ascx @@ -1,3 +1,3 @@ -<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> +<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %>

<%: Html.TitleForPage(T("Challenge Email").ToString()) %>

<%: T("Your email address has been validated.") %>

diff --git a/src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Index.aspx b/src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Index.aspx index 4bd5fad5b..1ae630b13 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Index.aspx +++ b/src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Index.aspx @@ -37,7 +37,10 @@ <%: Html.ActionLink(T("Edit").ToString(), "Edit", new { row.UserPart.Id })%> | <%: Html.ActionLink(T("Remove").ToString(), "Delete", new { row.UserPart.Id })%> | - <%: row.UserPart.RegistrationStatus == UserStatus.Pending ? Html.ActionLink(T("Approve").ToString(), "Approve", new { row.UserPart.Id }) : Html.ActionLink(T("Moderate").ToString(), "Moderate", new { row.UserPart.Id })%> + <%: row.UserPart.RegistrationStatus == UserStatus.Pending ? Html.ActionLink(T("Approve").ToString(), "Approve", new { row.UserPart.Id }) : Html.ActionLink(T("Disable").ToString(), "Moderate", new { row.UserPart.Id })%> + <% if ( row.UserPart.EmailStatus == UserStatus.Pending ) { %> | + <%: Html.ActionLink(T("Challenge Email").ToString(), "SendChallengeEmail", new { row.UserPart.Id })%> + <% } %> <%}%>