示例#1
0
        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;
        }
示例#2
0
        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));
        }