public ActionResult UpdateAccount() { if (Session["CustomerId"] == null) { TempData["ReasontoLogin"] = "******"; return(RedirectToAction("loginview", "login")); } int custID = Convert.ToInt32(Session["CustomerId"]); UpdateDetailsViewModel viewModel = new UpdateDetailsViewModel(); CustomerDetailsViewModel viewModel2 = new CustomerDetailsViewModel(); var tempCustomer = new HealthInsuranceDB().Customers.Find(custID); viewModel2.CustomerDetail = tempCustomer; viewModel2.CityDetail = new HealthInsuranceDB().Cities.Find(tempCustomer.CityID); viewModel2.StateDetail = new HealthInsuranceDB().States.Find(tempCustomer.StateID); viewModel.FullCustomerDetail = viewModel2; var cities = new HealthInsuranceDB().Cities; viewModel.CityNames = cities.Select(c => new SelectListItem { Text = c.CityName, Value = c.CityID.ToString() }); var states = new HealthInsuranceDB().States; viewModel.StateNames = states.Select(s => new SelectListItem { Text = s.StateName, Value = s.StateID.ToString() }); ViewBag.date = tempCustomer.DateofBirth; return(View(viewModel)); }
public ActionResult UpdateAccount(UpdateDetailsViewModel viewModel) { if (ModelState.IsValid) { DateTime date = viewModel.FullCustomerDetail.CustomerDetail.DateofBirth; var db = new HealthInsuranceDB(); Customer tempCustomer = new Customer(); tempCustomer = db.Customers.Find(viewModel.FullCustomerDetail.CustomerDetail.CustomerID); tempCustomer.CustomerID = viewModel.FullCustomerDetail.CustomerDetail.CustomerID; tempCustomer.Address = viewModel.FullCustomerDetail.CustomerDetail.Address; if (viewModel.FullCustomerDetail.CustomerDetail.Gender) { tempCustomer.Gender = true; } else { tempCustomer.Gender = false; } tempCustomer.DateofBirth = date; tempCustomer.Phone = viewModel.FullCustomerDetail.CustomerDetail.Phone; tempCustomer.DoctorID = viewModel.FullCustomerDetail.CustomerDetail.DoctorID; tempCustomer.Email = viewModel.FullCustomerDetail.CustomerDetail.Email; tempCustomer.Firstname = viewModel.FullCustomerDetail.CustomerDetail.Firstname; tempCustomer.Lastname = viewModel.FullCustomerDetail.CustomerDetail.Lastname; tempCustomer.SSN = viewModel.FullCustomerDetail.CustomerDetail.SSN; tempCustomer.Zip = viewModel.FullCustomerDetail.CustomerDetail.Zip; tempCustomer.UserID = viewModel.FullCustomerDetail.CustomerDetail.UserID; tempCustomer.CityID = viewModel.CitySelectedID; tempCustomer.StateID = viewModel.StateSelectedID; db.Entry(tempCustomer).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); return(RedirectToAction("index")); } return(View(viewModel)); }
private bool ChangedEmailAddress(UpdateDetailsViewModel model) { if (model.Email != User.Identity.GetUserName()) { return(true); } return(false); }
private bool ChangedPassword(UpdateDetailsViewModel model) { if (model.NewPassword != null) { return(true); } return(false); }
public async Task <IActionResult> UpdateDetails() { var user = await _userService.FetchCurrentUser(); var model = new UpdateDetailsViewModel(); model.Kund = _userService.FetchCurrentCustomer(user.Id); return(View(model)); }
public async Task <IActionResult> UpdateDetails(UpdateDetailsViewModel model) { var user = await _userService.FetchCurrentUser(); if (ModelState.IsValid) { _userService.UpdateUserDetails(user, model.Kund); ViewBag.UpdateMessage = "Ditt konto har uppdaterats."; return(View(model)); } return(View()); }
// // GET: /Manage/Index public ActionResult Index() { /* * ViewBag.StatusMessage = * message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed." * : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set." * : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set." * : message == ManageMessageId.Error ? "An error has occurred." * : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added." * : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed." * : ""; * * var userId = User.Identity.GetUserId(); * var model = new IndexViewModel * { * HasPassword = HasPassword(), * PhoneNumber = await UserManager.GetPhoneNumberAsync(userId), * TwoFactor = await UserManager.GetTwoFactorEnabledAsync(userId), * Logins = await UserManager.GetLoginsAsync(userId), * BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId) * }; */ var userId = User.Identity.GetUserId(); var currentUser = UserManager.FindById(userId); var model = new UpdateDetailsViewModel { PhoneNumber = currentUser.PhoneNumber, FirstName = currentUser.FirstName, Surname = currentUser.Surname, Email = currentUser.Email, BootstrapTheme = currentUser.BootstrapTheme, NewPassword = currentUser.PasswordHash, ConfirmPassword = currentUser.PasswordHash, OldPassword = currentUser.PasswordHash }; ViewBag.Name = User.Identity.Name; return(View(model)); }
public UpdateDetailsPage(string updateId) { InitializeComponent(); BindingContext = new UpdateDetailsViewModel(updateId); }
public async Task <ActionResult> Index(UpdateDetailsViewModel model) { //Set these flags so we know what was changed var emailVerified = true; var passwordChanged = false; if (!ModelState.IsValid) { return(View(model)); } /* * Now we need to make the changes saved on the form and take appropriate action[s] if email address or passwords were updated * as we need to log the user out in these circumstances but we need to save any theme, name changes or tele number changes * before we update any email address or passwords. * */ if (model.OldPassword == null && model.NewPassword != null) { ModelState.AddModelError("OldPassword", "Please enter your old password first when making changes to it!"); return(View(model)); } //Now we can retrieve the user details from SQL as we have no form errors and we will need to compare everything to decide what we do with the current login session var userId = User.Identity.GetUserId(); var currentUser = UserManager.FindById(userId); if (ChangedPassword(model)) { //We're updating our password so we can attempt to do that now //we will perform the required logout after the rest of any changes are applied var pwdResult = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword); if (pwdResult.Succeeded) { passwordChanged = true; } else { AddErrors(pwdResult); return(View(model)); } } if (ChangedEmailAddress(model)) { //Update the user's email address to the one entered on the form var emailResult = await UserManager.SetEmailAsync(User.Identity.GetUserId(), model.Email); //Did the change of email address happen? if (emailResult.Succeeded) { //Email update was successful emailVerified = false; //Generate a new security token string code = await UserManager.GenerateEmailConfirmationTokenAsync(currentUser.Id); //Generate the dynamic link for the email to be sent to the user to confirm the new address var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = currentUser.Id, code = code }, protocol: Request.Url.Scheme); //Generate a custom email message var mailMessage = $"<html><body>" + $"<p>Dear {model.FirstName},</p>" + $"<p>Thank you for updating your account with us today, we just need you to confirm your new email address now.</p>" + $"<p>Please confirm your account by clicking <a href=\"{callbackUrl}\">here</a></p>" + $"<p>Thank you,</p>" + $"<p>Easy Hire Admin</p>" + $"</body></html>"; //Send email verification to the user await UserManager.SendEmailAsync(currentUser.Id, "Confirm your email", mailMessage); } else //Email update was not successful so show the error message[s] and return the completed form to the user { AddErrors(emailResult); return(View(model)); } } //Update our user details to reflect any changes made to other areas on the form currentUser.BootstrapTheme = model.BootstrapTheme; currentUser.FirstName = model.FirstName; currentUser.Surname = model.Surname; currentUser.PhoneNumber = model.PhoneNumber; currentUser.UserName = model.Email; //Perform general account update var result = await UserManager.UpdateAsync(currentUser); //Was the update successful? if (result.Succeeded) { //General update was successful if (!emailVerified || passwordChanged) //Email or password was changed { //Sign user out AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); //Delete our custom cookie Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(-1); //Email was changed if (!emailVerified) { //Send the user to the email verification page ViewBag.AttemptSignIn = false; return(Redirect("~/Account/ConfirmRegistration")); } else //Password was changed { //Send the user to the login page now return(Redirect("~/Account/Login")); } } else //Email or password was not changed { //Uodate our login cookie to be able to use the custom fields from AspNetUser table var cookies = new CookieManager(); //cookies.context = System.Web.HttpContext.Current; cookies.WriteCookie(currentUser); //Redirect to confirm update view as the cookie for the theme (if it was changed) will only apply on next http request return(Redirect("~/Account/ConfirmUpdate")); } } //General update was not successful so show the error message[s] and return the completed form to the user. AddErrors(result); return(View(model)); }