Nearing feature complete for driver auth
This commit is contained in:
@@ -2,6 +2,9 @@
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Security;
|
||||
using MileageTraker.Web.Email;
|
||||
using MileageTraker.Web.ViewModels;
|
||||
using MileageTraker.Web.ViewModels.Account;
|
||||
using MileageTraker.Web.ViewModels.User;
|
||||
|
||||
namespace MileageTraker.Web.Controllers
|
||||
@@ -21,6 +24,8 @@ namespace MileageTraker.Web.Controllers
|
||||
return View(users);
|
||||
}
|
||||
|
||||
//todo: add export
|
||||
|
||||
public ActionResult Details(Guid id)
|
||||
{
|
||||
var user = Membership.GetUser(id);
|
||||
@@ -48,23 +53,32 @@ namespace MileageTraker.Web.Controllers
|
||||
return Json(user == null, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
|
||||
public JsonResult EmailAvailable(string email)
|
||||
public JsonResult FullNameAvailable(string fullname)
|
||||
{
|
||||
var user = DataService.FindUserByEmail(email);
|
||||
var user = DataService.FindUserByFullName(fullname);
|
||||
return Json(user == null, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
|
||||
public ActionResult Create()
|
||||
public JsonResult ExistsByFullName(string userFullName)
|
||||
{
|
||||
var user = DataService.FindUserByFullName(userFullName);
|
||||
return Json(user != null, JsonRequestBehavior.AllowGet);
|
||||
}
|
||||
|
||||
public ActionResult Create()
|
||||
{
|
||||
var vm = new CreateUserViewModel
|
||||
{
|
||||
AvailableRoles = Roles.GetAllRoles()
|
||||
Roles = new CheckBoxViewModel{
|
||||
Available = Roles.GetAllRoles(),
|
||||
Selected = new []{"Driver"} // default driver
|
||||
}
|
||||
};
|
||||
|
||||
return View(vm);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[HttpPost]
|
||||
public ActionResult Create(CreateUserViewModel viewModel)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
@@ -72,8 +86,8 @@ namespace MileageTraker.Web.Controllers
|
||||
MembershipCreateStatus membershipCreateStatus;
|
||||
var membershipUser =
|
||||
Membership.CreateUser(
|
||||
viewModel.Username,
|
||||
viewModel.Password,
|
||||
viewModel.Username,
|
||||
"uninitialized_state",
|
||||
viewModel.Email,
|
||||
null,
|
||||
null,
|
||||
@@ -83,30 +97,40 @@ namespace MileageTraker.Web.Controllers
|
||||
if (membershipUser == null)
|
||||
{
|
||||
ModelState.AddModelError("", ErrorCodeToString(membershipCreateStatus));
|
||||
viewModel.AvailableRoles = Roles.GetAllRoles();
|
||||
viewModel.Roles.Available = Roles.GetAllRoles();
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
if (viewModel.Roles != null && viewModel.Roles.Any())
|
||||
if (viewModel.Roles.Selected != null && viewModel.Roles.Selected.Any())
|
||||
{
|
||||
Roles.AddUserToRoles(
|
||||
membershipUser.UserName,
|
||||
viewModel.Roles);
|
||||
viewModel.Roles.Selected);
|
||||
}
|
||||
|
||||
var user = DataService.GetUser((Guid) membershipUser.ProviderUserKey);
|
||||
user.FullName = viewModel.FullName;
|
||||
DataService.UpdateUserPersonalInfo(user);
|
||||
|
||||
TempData["StatusMessage"] = "User " + user.Username + " created";
|
||||
if (viewModel.SetPassword)
|
||||
{
|
||||
TempData["StatusMessage"] = "User " + user.Username + " created";
|
||||
return RedirectToAction("SetPassword", new { id = user.UserId });
|
||||
}
|
||||
|
||||
var email = new EmailNotificationService();
|
||||
var resetPasswordUrl = ResetPassword(user);
|
||||
email.SendInitializePassword(user, resetPasswordUrl);
|
||||
|
||||
TempData["StatusMessage"] = "User " + user.Username + " created, invitation sent to " + user.Email;
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
viewModel.AvailableRoles = Roles.GetAllRoles();
|
||||
viewModel.Roles.Available = Roles.GetAllRoles();
|
||||
return View(viewModel);
|
||||
}
|
||||
|
||||
public ActionResult Edit(Guid id)
|
||||
public ActionResult Edit(Guid id)
|
||||
{
|
||||
var user = DataService.GetUser(id);
|
||||
if (user == null)
|
||||
@@ -116,14 +140,17 @@ namespace MileageTraker.Web.Controllers
|
||||
|
||||
var vm = new EditUserViewModel(user)
|
||||
{
|
||||
Roles = Roles.GetRolesForUser(user.Username),
|
||||
AvailableRoles = Roles.GetAllRoles()
|
||||
Roles = new CheckBoxViewModel
|
||||
{
|
||||
Selected = Roles.GetRolesForUser(user.Username),
|
||||
Available = Roles.GetAllRoles()
|
||||
}
|
||||
};
|
||||
|
||||
return View(vm);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[HttpPost]
|
||||
public ActionResult Edit(EditUserViewModel viewModel)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
@@ -133,11 +160,11 @@ namespace MileageTraker.Web.Controllers
|
||||
DataService.UpdateUserPersonalInfo(user);
|
||||
|
||||
Roles.RemoveUserFromRoles(user.Username, Roles.GetAllRoles());
|
||||
if (viewModel.Roles != null && viewModel.Roles.Any())
|
||||
if (viewModel.Roles != null)
|
||||
{
|
||||
Roles.AddUserToRoles(
|
||||
user.Username,
|
||||
viewModel.Roles);
|
||||
viewModel.Roles.Selected);
|
||||
}
|
||||
|
||||
TempData["StatusMessage"] = "Changes saved for " + user.Username;
|
||||
|
||||
Reference in New Issue
Block a user