public ActionResult ResetPassword(ResetPasswordModel model)
        {
            model.RecaptchaSiteKey = SiteUtil.RecaptchaSiteKey;

            if (!IsValidateReCaptcha())
            {
                ModelState.AddModelError("", "Google reCaptcha validation failed.");
                return(View(model));
            }

            if (ModelState.IsValid)
            {
                // Check password format
                if (!ValidatePassword(model.NewPassword))
                {
                    ModelState.AddModelError("Password", "The password is not correct format");
                    return(View(model));
                }

                var login = _loginRepository.GetQueryable()
                            .Where(x => x.Username == model.Email).FirstOrDefault();

                if (login == null || login.PasswordHash != model.OldPassword)
                {
                    ModelState.AddModelError("", "Your account is invalid. " +
                                             "Please contact to support team!");
                    return(View(model));
                }

                if (!login.EmailAddressAuthorized)
                {
                    ModelState.AddModelError("", "Your email has not been verified. " +
                                             "Please check your inbox email or contact to support team!");
                    return(View(model));
                }

                if (login.IsDisabled)
                {
                    ModelState.AddModelError("", "Your account is disable. " +
                                             "Please contact to support team!");
                    return(View(model));
                }

                // everything is ok. update a new password
                _signUpService.ResetPassword(login, model.NewPassword);

                return(RedirectToAction("ResetPasswordSuccess"));
            }
            else
            {
                ModelState.AddModelError("", "Something went wrong. Please contact to support team!");
            }

            return(View(model));
        }