Ejemplo n.º 1
0
        public async Task <IActionResult> UpdatePassword([FromBody] UpdatePassword model)
        {
            var result = new UpdatePasswordResult {
                Success = false
            };

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var user = await _userManager.FindByEmailAsync(model.Email);

            if (!await _userManager.HasPasswordAsync(user))
            {
                result.Success = (await _userManager.AddPasswordAsync(user, model.NewPassword)).Succeeded;
            }
            else
            {
                if (!string.Equals(model.Password, model.ConfirmPassword))
                {
                    return(Ok(result));
                }
                if (await _userManager.CheckPasswordAsync(user, model.Password))
                {
                    result.Success = (await _userManager.ChangePasswordAsync(user, model.Password, model.NewPassword)).Succeeded;
                    return(Ok(result));
                }
            }

            return(Ok(result));
        }
        /// <summary>
        /// Resets the user password.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="inputModel">The input model.</param>
        /// <returns>The manager response.</returns>
        public virtual ManagerResponse <UpdatePasswordResult, bool> ResetUserPassword([NotNull] CommerceStorefront storefront, ForgotPasswordInputModel inputModel)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(inputModel, "inputModel");
            Assert.ArgumentNotNullOrEmpty(inputModel.Email, "inputModel.Email");

            var result = new UpdatePasswordResult {
                Success = true
            };

            var getUserResponse = this.GetUser(inputModel.Email);

            if (!getUserResponse.ServiceProviderResult.Success || getUserResponse.Result == null)
            {
                result.Success = false;
                foreach (var systemMessage in getUserResponse.ServiceProviderResult.SystemMessages)
                {
                    result.SystemMessages.Add(systemMessage);
                }
            }
            else
            {
                try
                {
                    var    userIpAddress       = HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : string.Empty;
                    string provisionalPassword = Membership.Provider.ResetPassword(getUserResponse.Result.UserName, string.Empty);

                    var mailUtil     = new MailUtil();
                    var wasEmailSent = mailUtil.SendMail("ForgotPassword", inputModel.Email, storefront.SenderEmailAddress, new object(), new object[] { userIpAddress, provisionalPassword });
                    if (!wasEmailSent)
                    {
                        var message = StorefrontManager.GetSystemMessage(StorefrontConstants.SystemMessages.CouldNotSentEmailError);
                        result.Success = false;
                        result.SystemMessages.Add(new SystemMessage {
                            Message = message
                        });
                    }
                }
                catch (Exception e)
                {
                    result.Success = false;
                    result.SystemMessages.Add(new SystemMessage {
                        Message = e.Message
                    });
                }

                if (!result.Success)
                {
                    Helpers.LogSystemMessages(result.SystemMessages, result);
                }
            }

            return(new ManagerResponse <UpdatePasswordResult, bool>(result, result.Success));
        }
Ejemplo n.º 3
0
        public ManagerResponse <UpdatePasswordResult, bool> ResetUserPassword(ForgotPasswordInputModel inputModel)
        {
            Assert.ArgumentNotNull(inputModel, nameof(inputModel));
            Assert.ArgumentNotNullOrEmpty(inputModel.Email, nameof(inputModel.Email));

            var result = new UpdatePasswordResult {
                Success = true
            };

            var getUserResponse = GetUser(inputModel.Email);

            if (!getUserResponse.ServiceProviderResult.Success || getUserResponse.Result == null)
            {
                result.Success = false;
                foreach (var systemMessage in getUserResponse.ServiceProviderResult.SystemMessages)
                {
                    result.SystemMessages.Add(systemMessage);
                }
            }
            else
            {
                try
                {
                    var userIpAddress       = HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : string.Empty;
                    var provisionalPassword = Membership.Provider.ResetPassword(getUserResponse.Result.UserName,
                                                                                string.Empty);

                    var wasEmailSent = MailManager.SendMail("ForgotPassword", inputModel.Email, userIpAddress, provisionalPassword);

                    if (!wasEmailSent)
                    {
                        var message = DictionaryPhraseRepository.Current.Get("/System Messages/Accounts/Could Not Send Email Error", "Sorry, the email could not be sent");
                        result.Success = false;
                        result.SystemMessages.Add(new SystemMessage {
                            Message = message
                        });
                    }
                }
                catch (Exception e)
                {
                    result.Success = false;
                    result.SystemMessages.Add(new SystemMessage {
                        Message = e.Message
                    });
                }

                result.WriteToSitecoreLog();
            }

            return(new ManagerResponse <UpdatePasswordResult, bool>(result, result.Success));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Resets the user password.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="inputModel">The input model.</param>
        /// <returns>The manager response.</returns>
        public virtual ManagerResponse<UpdatePasswordResult, bool> ResetUserPassword([NotNull] CommerceStorefront storefront, ForgotPasswordInputModel inputModel)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(inputModel, "inputModel");
            Assert.ArgumentNotNullOrEmpty(inputModel.Email, "inputModel.Email");

            var result = new UpdatePasswordResult { Success = true };

            var getUserResponse = this.GetUser(inputModel.Email);
            if (!getUserResponse.ServiceProviderResult.Success || getUserResponse.Result == null)
            {
                result.Success = false;
                foreach (var systemMessage in getUserResponse.ServiceProviderResult.SystemMessages)
                {
                    result.SystemMessages.Add(systemMessage);
                }
            }
            else
            {
                try
                {
                    var userIpAddress = HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : string.Empty;
                    string provisionalPassword = Membership.Provider.ResetPassword(getUserResponse.Result.UserName, string.Empty);

                    var mailUtil = new MailUtil();
                    var wasEmailSent = mailUtil.SendMail("ForgotPassword", inputModel.Email, storefront.SenderEmailAddress, new object(), new object[] { userIpAddress, provisionalPassword });
                    if (!wasEmailSent)
                    {
                        var message = StorefrontManager.GetSystemMessage("CouldNotSentEmailError");
                        result.Success = false;
                        result.SystemMessages.Add(new SystemMessage { Message = message });
                    }
                }
                catch (Exception e)
                {
                    result.Success = false;
                    result.SystemMessages.Add(new SystemMessage { Message = e.Message });
                }

                if (!result.Success)
                {
                    Helpers.LogSystemMessages(result.SystemMessages, result);
                }
            }

            return new ManagerResponse<UpdatePasswordResult, bool>(result, result.Success);
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> UpdatePassword(UpdatePasswordViewModel model)
        {
            UpdatePasswordResult result = await _mediatr.Send(new UpdatePasswordCommand(model.OldPassword, model.NewPassword));

            return(HandleResult(result));
        }