public ActionResult Edit(UserProfile userProfile) { if (ModelState.IsValid) { try { userProfile.UserName = userProfile.Email; //user name is same as email //Check for unique username/email if (!String.Equals(userProfile.OldUserNameWhenChangedByAdmin, userProfile.UserName, StringComparison.CurrentCultureIgnoreCase)) { var existingUser = _unitOfWork.UserRepository.GetUserByUserName(userProfile.UserName); if (existingUser != null && existingUser.UserId > 0) { var message = "Unable to save changes. This user name " + userProfile.UserName + " already existed."; //ModelState.AddModelError("", message); ViewBag.Error = message; ViewBag.UserTypeId = GetUserTypeSelectList(userProfile.UserTypeId); return View(userProfile); } } userProfile.ModifiedBy = User.Identity.Name; userProfile.ModifiedOn = DateTime.UtcNow; _unitOfWork.UserRepository.Update(userProfile); _unitOfWork.Save(); var userType = GetUserType(userProfile.UserTypeId); var roles = (SimpleRoleProvider)Roles.Provider; //if the current value is changed from what we have in database then need to drop the existing role //and add current role as new role if (!roles.IsUserInRole(userProfile.UserName, userType)) { var rolesUserCurrentlyIn = Roles.GetRolesForUser(userProfile.UserName); roles.RemoveUsersFromRoles(new[] { userProfile.UserName }, rolesUserCurrentlyIn); roles.AddUsersToRoles(new[] { userProfile.UserName }, new[] { userType }); //IF Role is changing AND I am editing my self THEN force logout if (String.Equals(userProfile.OldUserNameWhenChangedByAdmin, User.Identity.Name, StringComparison.CurrentCultureIgnoreCase)) { WebSecurity.Logout(); return RedirectToAction("Index", "SmartDbHome"); } } //IF UserName is changing AND I am editing my self THEN force logout if (String.Equals(userProfile.OldUserNameWhenChangedByAdmin, User.Identity.Name, StringComparison.CurrentCultureIgnoreCase)) { if (!String.Equals(userProfile.OldUserNameWhenChangedByAdmin, userProfile.UserName, StringComparison.CurrentCultureIgnoreCase)) { WebSecurity.Logout(); return RedirectToAction("Index", "SmartDbHome"); } } } catch (Exception ex) { ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator."); Utility.WriteToLog("UserController.Edit() : " + ex, "Error"); throw; } return RedirectToAction("Index"); } ViewBag.UserTypeId = GetUserTypeSelectList(userProfile.UserTypeId); return View(userProfile); }
public JsonResult LoadReferee(string refereeId) { int agentId; int.TryParse(refereeId, out agentId); var user = _unitOfWork.UserRepository.GetById(agentId); var data = new UserProfile { UserName = user.UserName, FirstName = user.FirstName, LastName = user.LastName, Email = user.Email, Address1 = user.Address1, Address2 = user.Address2, Agency = user.Agency, City = user.City, PostCode = user.PostCode, WorkTelephone = user.WorkTelephone, MobileTelephone = user.MobileTelephone, RelationshipWithApplicant = user.RelationshipWithApplicant }; return Json(JsonConvert.SerializeObject(data), JsonRequestBehavior.AllowGet); }
public ActionResult Create(UserProfile userProfile) { if (ModelState.IsValid) { try { var roles = _unitOfWork.UserRepository.GetAllRoles(); //user name is same as email userProfile.UserName = userProfile.Email; WebSecurity.CreateUserAndAccount( userProfile.UserName, userProfile.Password, propertyValues: new { Agency = userProfile.Agency, Address1 = userProfile.Address1, Address2 = userProfile.Address2, City = userProfile.City, PostCode = userProfile.PostCode, WorkTelephone = userProfile.WorkTelephone, MobileTelephone = userProfile.MobileTelephone, Email = userProfile.Email, RelationshipWithApplicant = userProfile.RelationshipWithApplicant, UserTypeId = userProfile.UserTypeId, FirstName = userProfile.FirstName, LastName = userProfile.LastName, IsHistoric = userProfile.IsHistoric, CreatedBy = User.Identity.Name, CreatedOn = DateTime.UtcNow }); var userType = GetUserType(userProfile.UserTypeId); roles.AddUsersToRoles(new[] {userProfile.UserName}, new[] {userType}); } catch (MembershipCreateUserException e) { ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); } return RedirectToAction("Index"); } ViewBag.UserTypeId = GetUserTypeSelectList(userProfile.UserTypeId); return View(userProfile); }