Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Password Match and Password Strength - Two Pass Fields... #9

Open
ejntaylor opened this issue Aug 7, 2017 · 2 comments
Open

Password Match and Password Strength - Two Pass Fields... #9

ejntaylor opened this issue Aug 7, 2017 · 2 comments

Comments

@ejntaylor
Copy link

ejntaylor commented Aug 7, 2017

I have two password fields. The second is a confirmation that the password matches the first.

I need to: 1. check score is strong on first field only & 2. confirm two password input fields match.

Then I need to display messaging and allow submission when both criteria are true.

I can do both, but not together. Is that possible? No method to access score on keyup outside function? Any thoughts?

For 1. I'm using keyup as follows and this works:

               if (data.score > 35) {
                    formSecurity.find('.pwd-messages').text("Strong Password");
                    formSecurity.find('#profile-edit-security button[name=submit]').prop("disabled",true);


                } else {
                    formSecurity.find(".pwd-messages").text("Password not strong enough");
                    formSecurity.find('#profile-edit-security button[name=submit]').prop("disabled",true);
                }

As the keyup is only triggered on the first pass field I've added another function outside the callback. You can see I've added a var score (as I thought I might be able to extract the score somehow). This bit of code is kind of how I imagine this working if I could get the score.

Has this been done before? Not sure how to proceed but sure this is not too much of an edge case. Ideas appreciated!

        $(".pass-match-input").keyup(function() {

            var formSecurity = $('form#profile-edit-security');
            var score = 40;


            // check match
            if ($('#password1').val() === $('#password2').val() && score > 35) {
                formSecurity.find('.pwd-messages').text("Strong Password and Matching");
            } else if($('#password1').val() === $('#password2').val() && score < 35) {
                formSecurity.find('.pwd-messages').text("Matching but password not strong.");
            }
            else {
                formSecurity.find('.pwd-messages').text("Not Matching");
        });
@razmous
Copy link

razmous commented Nov 15, 2017

Hi,
I figure out how to achieve this

jQuery(document).ready(function () {
    var pwstrenght_score;
function PasswordMatch() {
      password = $("#password").val();
      confpassword = $("#confpassword").val();
      
        if (password != confpassword){
   
        $("#submitbutton").prop( "disabled", true );

      } else if(pwstrenght_score >=14){# pw are equals and score is OK

        $("#submitbutton").prop( "disabled", false );
      }else{# passwords are equal but score is not OK

        $("#submitbutton").prop( "disabled", true );

      }
    };
options.common = {
     
      onKeyUp: function (evt, data) {
    
        pwstrenght_score = data.score;
      
      },
};
  $("#password, #confpassword").keyup(PasswordMatch);

you need to set button id
<button id="submitbutton" type="button" class="btn btn-primary btn-lg" disabled>Button</button>

@sooslaca
Copy link

Here is another version on how to achieve this.
Create a pwstrength.overload.js file and include that right after the original js.

Then get the score by $("#element").pwstrength("score")

if (jQuery.fn.pwstrength) {
  (function(){
    var _score = 0
    var _pwstrength = jQuery.fn.pwstrength
    jQuery.fn.pwstrength = function (method) {
      if ( "score" == method ) {
        return _score
      }
      if ( "init" == method || !method ) {
        _pwstrength.apply(this, [{
          common: {
            maxChar: 100,
            onScore: function (options, word, score) {
                _score = score;
                return score
            }
          }
        }])
      } else {
        _pwstrength.apply(this, [method])
      }
    }
  })();
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants