public async Task <IActionResult> ChangePassword(ChangePasswordModel model) { if (ModelState.IsValid) { if (!model.Name.Equals(User.Identity.Name)) { ModelState.AddModelError("", "Доступ запрещён."); //попытка изменить пароль другому пользователю пресекается. return(View(model)); } User user = await db.Users.FirstOrDefaultAsync(u => u.Name == model.Name); if (user != null) { if (user.Password == PasswordService.GetPasswordHash(model.OldPassword)) { //меняем пароль пользователя на новый user.Password = PasswordService.GetPasswordHash(model.NewPassword); db.Entry(user).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("Index", "Home")); } else { ModelState.AddModelError("", "Старый пароль введён неверно."); } } else { ModelState.AddModelError("", "Пользователь не найден."); } } return(View(model)); }
public IHttpActionResult PutUser(int id, User user) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != user.Id) { return(BadRequest()); } db.Entry(user).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!UserExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public IActionResult PutUser(int id, [FromBody] User user) { //Пользователь в роли "user" может редактировать только самого себя и не может других пользователей. if (User.IsInRole("user") && !User.Identity.Name.Equals(user.Name)) { return(StatusCode(StatusCodes.Status403Forbidden)); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != user.Id) { return(BadRequest()); } db.Entry(user).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!UserExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(StatusCodes.Status204NoContent)); }