Exemplo n.º 1
0
        public CompletePasswordResetResponse CompletePasswordReset(CompletePasswordResetRequest request)
        {
            CompletePasswordResetResponse response = new CompletePasswordResetResponse();

            try
            {
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.Username, "User name");
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.Token, "Token");
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.NewPassword, "New Password");

                Common.Helpers.ValidationHelper.ValidateStringLength(request.NewPassword, "New Password", Constants.MaxPasswordLength);

                Common.Helpers.ValidationHelper.ValidateUsername(request.Username);
                ValidationHelper.ValidatePassword(request.NewPassword);

                ResetPasswordToken token = ResetPasswordToken.FromBytes(EncryptionHelper.DecryptURL(Convert.FromBase64String(request.Token)));

                Common.Helpers.ValidationHelper.Assert(token.Username.Equals(request.Username), "Invalid input.");
                Common.Helpers.ValidationHelper.Assert(DateTime.Now < token.ExpiresOn, "Password reset request has expired.");

                DbContext context = DataController.CreateDbContext();

                UserController.ChangePassword(token.Username, request.NewPassword);
            }
            catch (AuthenticationException ex)
            {
                throw new WebFaultException <string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
            }
            catch (Common.Exceptions.ValidationException ex)
            {
                throw new WebFaultException <string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
            }
            catch (Exception ex)
            {
                ExceptionHelper.Log(ex, string.Empty);
                throw new WebFaultException <string>("An unknown error has occurred.", System.Net.HttpStatusCode.InternalServerError);
            }

            return(response);
        }
Exemplo n.º 2
0
        public CompletePasswordResetResponse CompletePasswordReset(CompletePasswordResetRequest request)
        {
            CompletePasswordResetResponse response = new CompletePasswordResetResponse();

            try
            {
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.Username, "User name");
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.Token, "Token");
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.NewPassword, "New Password");

                Common.Helpers.ValidationHelper.ValidateStringLength(request.NewPassword, "New Password", Constants.MaxPasswordLength);

                Common.Helpers.ValidationHelper.ValidateUsername(request.Username);
                ValidationHelper.ValidatePassword(request.NewPassword);

                ResetPasswordToken token = ResetPasswordToken.FromBytes(EncryptionHelper.DecryptURL(Convert.FromBase64String(request.Token)));

                Common.Helpers.ValidationHelper.Assert(token.Username.Equals(request.Username), "Invalid input.");
                Common.Helpers.ValidationHelper.Assert(DateTime.Now < token.ExpiresOn, "Password reset request has expired.");

                DbContext context = DataController.CreateDbContext();
                
                UserController.ChangePassword(token.Username, request.NewPassword);
            }
            catch (AuthenticationException ex)
            {
                throw new WebFaultException<string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
            }
            catch (Common.Exceptions.ValidationException ex)
            {
                throw new WebFaultException<string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
            }
            catch (Exception ex)
            {
                ExceptionHelper.Log(ex, string.Empty);
                throw new WebFaultException<string>("An unknown error has occurred.", System.Net.HttpStatusCode.InternalServerError);
            }

            return response;
        }