OperationResult FinishImpl(string cipher, FinishInput input) { if (input == null) throw new ArgumentNullException("input"); var canFinishResult = CanFinish(cipher); if (canFinishResult.IsError) return canFinishResult; UserWrapper user = canFinishResult.ValueAsSuccess; var errors = new ErrorBuilder(); if (errors.NotValid(input) || !this.passServ.TrySetPassword(user, () => input.NewPassword, errors)) return errors; user.PasswordResetTicketExpiration = null; this.repo.UpdateUser(user); return HttpStatusCode.OK; }
public ActionResult Finish(string id, FinishInput input) { this.ViewData.Model = new FinishViewModel(input); if (!this.ModelState.IsValid) return View().WithStatus(HttpStatusCode.BadRequest); var result = FinishImpl(id, input); if (result.IsError) { if (result.StatusCode == HttpStatusCode.BadRequest) return View().WithErrors(result); throw new HttpException((int)result.StatusCode, result.Value.ToStringInvariant()); } return HttpSeeOther(this.Url.Action(Done)); }