Cleanup and fixes

This commit is contained in:
2013-01-12 14:58:33 -05:00
parent bc019923d2
commit e50052d41e
27 changed files with 240 additions and 156 deletions
+30 -14
View File
@@ -1,10 +1,9 @@
using System;
using System.Web.Mvc;
using System.Web.Security;
using MileageTraker.Web.Attributes;
using MileageTraker.Web.DAL;
using MileageTraker.Web.Email;
using MileageTraker.Web.Models;
using MileageTraker.Web.Utility;
using MileageTraker.Web.ViewModels.Account;
namespace MileageTraker.Web.Controllers
@@ -74,23 +73,31 @@ namespace MileageTraker.Web.Controllers
: message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
: null;
ViewBag.ReturnUrl = Url.Action("Manage");
return View();
var user = DataService.FindUserByUsername(User.Identity.Name);
var viewModel = new ChangePasswordViewModel(user);
return View(viewModel);
}
[HttpPost]
[ValidateAntiForgeryToken]
[ActionLog]
public ActionResult Manage(ChangePasswordViewModel model)
{
ViewBag.ReturnUrl = Url.Action("Manage");
var membershipUser = Membership.GetUser(User.Identity.Name, true);
//var user = DataService.FindUserByUsername(User.Identity.Name);
//model.SetProperties(user);
if (ModelState.IsValid)
{
// ChangePassword will throw an exception rather than return false in certain failure scenarios.
bool changePasswordSucceeded;
try
{
var currentUser = Membership.GetUser(User.Identity.Name, true);
changePasswordSucceeded = currentUser.ChangePassword(model.OldPassword, model.NewPassword);
changePasswordSucceeded = membershipUser.ChangePassword(model.OldPassword, model.NewPassword);
}
catch (Exception)
{
@@ -130,7 +137,7 @@ namespace MileageTraker.Web.Controllers
/// View the Reset Password form
/// </summary>
[AllowAnonymous]
[AcceptVerbs(HttpVerbs.Get)]
[HttpGet]
public ViewResult ResetPassword(string username)
{
return View(new ResetPasswordViewModel{Username = username});
@@ -140,12 +147,13 @@ namespace MileageTraker.Web.Controllers
/// Begins the Reset Password process
/// </summary>
[AllowAnonymous]
[AcceptVerbs(HttpVerbs.Post)]
[HttpPost]
[ValidateAntiForgeryToken]
[ActionLog]
public ActionResult ResetPassword(ResetPasswordViewModel viewModel)
{
var user = DataService.FindUserByUsername(viewModel.Username);
if (user != null && Request.Url != null)
if (user != null && user.IsApproved && Request.Url != null)
{
var email = new EmailNotificationService();
var resetPasswordUrl = ResetPassword(user);
@@ -161,11 +169,12 @@ namespace MileageTraker.Web.Controllers
/// Action users are sent to when they reset their password.
/// </summary>
[AllowAnonymous]
[AcceptVerbs(HttpVerbs.Get)]
[HttpGet]
public ActionResult NewPassword(Guid userId, string passwordResetToken)
{
var user = DataService.GetUser(userId);
if (user != null && user.PasswordResetToken == passwordResetToken)
if (user != null && user.IsApproved &&
user.PasswordResetToken == passwordResetToken)
{
var newPasswordViewModel
= new NewPasswordViewModel
@@ -185,18 +194,25 @@ namespace MileageTraker.Web.Controllers
/// </summary>
/// <param name="viewModel">The view model.</param>
[AllowAnonymous]
[AcceptVerbs(HttpVerbs.Post)]
[HttpPost]
[ValidateAntiForgeryToken]
[ActionLog]
public ActionResult NewPassword(NewPasswordViewModel viewModel)
{
if (ModelState.IsValid)
{
var user = DataService.GetUser(viewModel.UserId);
if (user != null && user.PasswordResetToken == viewModel.PasswordResetToken)
if (user != null && user.IsApproved &&
user.PasswordResetToken == viewModel.PasswordResetToken)
{
DataService.UpdateUserPassword(viewModel.UserId, viewModel.NewPassword);
TempData["StatusMessage"] = "Password set for " + viewModel.Username;
return RedirectToAction("Login", new {username = viewModel.Username});
var success = Membership.ValidateUser(user.Username, viewModel.NewPassword);
if (success)
{
FormsAuthentication.SetAuthCookie(viewModel.Username, false);
TempData["StatusMessage"] = "Password set for " + viewModel.Username + ", logged in";
return RedirectToAction("Index", "CreateLog");
}
}
}