public ActionResult UserProfile(EditRegisterModel model, HttpPostedFileBase ImageFile) { string fileName = string.Empty; if (ImageFile != null) { string subPath = "/Content/Images/UserAvatar"; // your code goes here bool exists = System.IO.Directory.Exists(Server.MapPath(subPath)); if (!exists) { System.IO.Directory.CreateDirectory(Server.MapPath(subPath)); } fileName = Path.GetFileNameWithoutExtension(ImageFile.FileName); string extension = Path.GetExtension(ImageFile.FileName); fileName = fileName + DateTime.Now.ToString("yymmssfff") + extension; model.AvatarPath = "/Content/Images/UserAvatar/" + fileName; fileName = Path.Combine(Server.MapPath("~/Content/Images/UserAvatar/"), fileName); ImageFile.SaveAs(fileName); } if (ModelState.IsValid) { var _user = db.UserProfiles.Find(model.Id); _user.LastName = model.LastName; _user.Name = model.UserName; _user.UserName = model.Email; _user.Email = model.Email; _user.PhoneNumber = model.PhoneNumber; _user.AvatarPath = model.AvatarPath; db.Entry(_user).State = EntityState.Modified; db.SaveChanges(); if (model.EditPassword != null && !string.IsNullOrEmpty(model.EditPassword)) { var token = WebSecurity.GeneratePasswordResetToken(model.Email); WebSecurity.ResetPassword(token, model.EditPassword); } } return(View(model)); }
public async Task <IActionResult> EditRegister(EditRegisterModel model) { if (!User.Identity.IsAuthenticated) { return(await Register(ViewBag.returnUrl ?? "/")); } var user = await userManager.GetUserAsync(User); if (user is null) { await signInManager.SignOutAsync(); HttpContext.Response.Cookies.Delete(".AspNetCore.Cookies"); return(RedirectToAction("Info", "Home", new InfoModel { Title = "Пользователь не найден", Text = "Приносим извинения: возможно Ваш Аккаунт был удалён или заблокирован модератором." })); } if (ModelState.IsValid) { bool todoEmail = false, todoName = false; if (user.NormalizedEmail != model.Email.ToUpper()) { todoEmail = true; user.Email = model.Email; user.EmailConfirmed = false; } if (user.UserName != model.UserName) { if (Config.Admin.ToUpper() == user.UserName.ToUpper()) { ModelState.AddModelError(string.Empty, $"Имя \"{Config.Admin}\" зарезервировано сервером, его нельзя изменять. Однако, пароль рекомендуется поменять, а email можно изменить."); return(View(model)); } todoName = true; user.UserName = model.UserName; } if (todoName || todoEmail) { var result = await userManager.UpdateAsync(user); if (result.Succeeded) { if (todoName) { await signInManager.SignInAsync(user, false); } if (todoEmail && !user.EmailConfirmed) { return(await SendConfirmEmail(user)); } return(Redirect(ViewBag.returnUrl ?? "/")); } foreach (var error in result.Errors) { switch (error.Code) { case "InvalidEmail": error.Description = "Не верно указан почтовый адрес"; break; case "InvalidUserName": error.Description = "Логин может состоять только из латинских букв и цифр"; break; case "DuplicateUserName": error.Description = "Пользователь с таким именем уже существует"; break; case "DuplicateEmail": error.Description = "Почтовый адрес привязан к другому пользователю"; model.Email = ""; break; } ModelState.AddModelError(string.Empty, error.Description); return(View(model)); } } return(Redirect(ViewBag.returnUrl ?? "/")); } return(View(model)); }