public async Task <Result> Handle(Command command, CancellationToken ct) { var user = await _db.Users .Where(m => m.ResetPasswordToken == command.Token) .SingleOrFailAsync($"Could not find token {command.Token}", ct); user.EnsureTokenIsValid(_userfyOptions.ResetPasswordWithin); user.ResetPassword(Hash.Create(command.Password)); await _mailer.SendLaterTo(user, new PasswordResetMail()); return(new Result()); }