public async Task <IActionResult> ForgotPassword(ForgotPasswordRequest forgotPassword)
        {
            if (forgotPassword.Email == null)
            {
                return(NotFound("Enter valid email"));
            }

            ResetPasswordResult authResult = await _identityService.ForgotPassword(forgotPassword.Email);

            if (authResult.Success)
            {
                string callback = /*Url.Action("ResetPassword", "Identity", new {*/ authResult.Token /*, authResult.Email })*/;
                Email  email    = new Email(authResult.Email, "Password reset", callback);

                await _emailEmmiter.SendResetEmail(email);

                return(Ok());
            }
            else
            {
                if (authResult.Errors.Count() > 1)
                {
                    return(BadRequest(new AuthenticationFailedResponse
                    {
                        Errors = authResult.Errors
                    }));
                }
                else
                {
                    return(BadRequest(authResult.Errors.ToList()[0]));
                }
            }
        }
Example #2
0
        public ResetPasswordResult GetMsgFromResetPWDActionResult(ResetPasswordResult result)
        {
            try
            {
                if (result.ErrorCode == "0" && String.IsNullOrEmpty(result.ErrorMessage))
                {
                    result.ErrorMessage = MessageListResource.I0004;
                }
                else if (result.ErrorCode == "0")
                {
                    result.ErrorMessage = String.Format(MessageListResource.I0005, result.ErrorMessage);
                }
                else if (result.ErrorCode == "1")
                {
                    result.ErrorMessage = MessageListResource.W0002;
                }
                else if (result.ErrorCode == "9")
                {
                    result.ErrorMessage = String.Format(MessageListResource.E0003, "delete", result.ErrorMessage);
                }

                return(result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #3
0
        public ActionResult ResetPassword(string[] EmpCode)
        {
            try
            {
                string empCodeXML          = ConvertToXml_Store(EmpCode, "EmpCode");
                ResetPasswordResult result = MasterService.ResetPassword(empCodeXML, UserDetail.UserID);

                return(Content(JsonConvert.SerializeObject(GetMsgFromResetPWDActionResult(result)), ConstantValues.JSON_CONTENT_TYPE));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #4
0
        public IActionResult ResetPassword(ResetPasswordViewModel model)
        {
            ResetPasswordResult result = ValidateResetPasswordResult(model);

            if (result.IsSuccess)
            {
                string buff = "";
                if (userService.SendResetPasswordEmail(model.Email, dataProtectorUtil.PublicKeyJson, dataProtectorUtil.PrivateKeyJson, HttpContext.Request.Host.ToString(), out buff))
                {
                    return(new JsonResult(result));
                }
                else
                {
                    result.IsSuccess         = false;
                    result.EmailErrorMessage = buff;
                }
            }
            return(new JsonResult(result));
        }
Example #5
0
        public object ResetPassword([FromBody] ResetPasswordInfo info)
        {
            ResetPasswordResult result = _accountService.ResetPassword(info.Account, info.Password, info.Code);

            switch (result.Code)
            {
            case ResetPasswordCode.AccountWrong:
                return(new { Code = "accountWrong", Msg = "账号错误" });

            case ResetPasswordCode.CodeWrong:
                return(new { Code = "codeWrong", Msg = "代码错误" });

            case ResetPasswordCode.Success:
                return(new { Code = "success", Msg = "成功" });

            default:
                return(new { Code = "undefined" });
            }
        }
Example #6
0
        private ResetPasswordResult ValidateResetPasswordResult(ResetPasswordViewModel model)
        {
            ResetPasswordResult result = new ResetPasswordResult();
            string buff = "";

            result.IsValidUserName         = inputValidatorUtil.ValidateUserName(model.UserName, out buff);
            result.UserNameErrorMessage    = buff;
            result.IsValidEmail            = inputValidatorUtil.ValidateEmail(model.Email, out buff);
            result.EmailErrorMessage       = buff;
            result.IsValidCaptchaCode      = inputValidatorUtil.ValidateCaptchaCode(model.CaptchaCode, HttpContext.Session.GetString("CaptchaCode"), out buff);
            result.CaptchaCodeErrorMessage = buff;
            if (result.IsValidEmail && result.IsValidUserName && result.IsValidCaptchaCode)
            {
                result.IsSuccess = true;
            }
            else
            {
                result.IsSuccess = false;
            }
            return(result);
        }
        // [AllowAnonymous]
        // [ValidateAntiForgeryToken]
        public async Task <IActionResult> ResetPassword([FromBody] ResetPasswordBindings bindings)
        {
            var id           = bindings.Id;
            var resetFormURL = bindings.resetFormURL ?? "";
            // TODO: validate model here or with a filter ?
            // TODO: do we really need the email confirmation ?
            var user = await _userManager.FindByIdAsync(id);

            if (user == null) // || !(await _userManager.IsEmailConfirmedAsync(user))
            {
                _logger.LogWarning("Invalid forgot password attempt.");

                // Don't reveal that the user does not exist or is not confirmed
                return(Ok(ApiModel.AsError <string>(null, "user does not exist")));
            }

            // For more information on how to enable account confirmation and password reset please
            // visit https://go.microsoft.com/fwlink/?LinkID=532713
            var code = await _userManager.GeneratePasswordResetTokenAsync(user);

            var values = new { id = user.Id, code = code };

            var callbackUrl = Url.Action(
                action: nameof(AccountController.ResetPassword),
                controller: nameof(AccountController).ToLowerInvariant().Replace("controller", ""),
                values: values,
                protocol: Request.Scheme,
                host: Request.Host.Value);

            var encodedCallback = WebUtility.UrlEncode(callbackUrl);
            var link            = $"{resetFormURL}?action={encodedCallback}";
            var result          = new ResetPasswordResult {
                Id = id, Code = code, Link = link, Username = user.UserName
            };

            result.sent = bindings.email && await _emailSender.SendEmailAsync(user.Email, "Reset Password",
                                                                              $"Please reset your password by clicking here: <a href='{link}'>link</a>");

            return(Ok(ApiModel.AsSuccess <ResetPasswordResult>(result)));
        }
Example #8
0
 public SynResetResponse(ResetPasswordResult _Result, string _Username = "")
 {
     Result   = _Result;
     Username = _Username;
 }