mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	portico: Fix logic for whether a password field is present.
Now, we correctly avoid calling various password quality/strength functions in the registration flow in the event that there isn't a password form on the current page. Before, some code wasn't inside a block at all, while other code was using an incorrect check (an empty jQuery object is not falsey). The overall result was that this would often crash on certain pages/flows, stopping JS execution and causing various secondary problems.
This commit is contained in:
		@@ -1,13 +1,24 @@
 | 
				
			|||||||
$(function () {
 | 
					$(function () {
 | 
				
			||||||
    // NB: this file is included on multiple pages.  In each context,
 | 
					    // NB: this file is included on multiple pages.  In each context,
 | 
				
			||||||
    // some of the jQuery selectors below will return empty lists.
 | 
					    // some of the jQuery selectors below will return empty lists.
 | 
				
			||||||
    var password_field = $('#id_password, #id_new_password1');
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $.validator.addMethod('password_strength', function (value) {
 | 
					    var password_field = $('#id_password, #id_new_password1');
 | 
				
			||||||
        return common.password_quality(value, undefined, password_field);
 | 
					    if (password_field.length > 0) {
 | 
				
			||||||
    }, function () {
 | 
					        $.validator.addMethod('password_strength', function (value) {
 | 
				
			||||||
        return common.password_warning(password_field.val(), password_field);
 | 
					            return common.password_quality(value, undefined, password_field);
 | 
				
			||||||
    });
 | 
					        }, function () {
 | 
				
			||||||
 | 
					            return common.password_warning(password_field.val(), password_field);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        // Reset the state of the password strength bar if the page
 | 
				
			||||||
 | 
					        // was just reloaded due to a validation failure on the backend.
 | 
				
			||||||
 | 
					        common.password_quality(password_field.val(), $('#pw_strength .bar'), password_field);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        password_field.on('change keyup', function () {
 | 
				
			||||||
 | 
					            // Update the password strength bar even if we aren't validating
 | 
				
			||||||
 | 
					            // the field yet.
 | 
				
			||||||
 | 
					            common.password_quality($(this).val(), $('#pw_strength .bar'), $(this));
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function highlight(class_to_add) {
 | 
					    function highlight(class_to_add) {
 | 
				
			||||||
        // Set a class on the enclosing control group.
 | 
					        // Set a class on the enclosing control group.
 | 
				
			||||||
@@ -38,12 +49,6 @@ $(function () {
 | 
				
			|||||||
        unhighlight: highlight('success'),
 | 
					        unhighlight: highlight('success'),
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (password_field) {
 | 
					 | 
				
			||||||
        // Reset the state of the password strength bar if the page
 | 
					 | 
				
			||||||
        // was just reloaded due to a validation failure on the backend.
 | 
					 | 
				
			||||||
        common.password_quality(password_field.val(), $('#pw_strength .bar'), password_field);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if ($("#registration").length > 0) {
 | 
					    if ($("#registration").length > 0) {
 | 
				
			||||||
        // Check if there is no input field with errors.
 | 
					        // Check if there is no input field with errors.
 | 
				
			||||||
        if ($('.help-inline:not(:empty)').length === 0) {
 | 
					        if ($('.help-inline:not(:empty)').length === 0) {
 | 
				
			||||||
@@ -68,12 +73,6 @@ $(function () {
 | 
				
			|||||||
        $("#timezone").val(moment.tz.guess());
 | 
					        $("#timezone").val(moment.tz.guess());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    password_field.on('change keyup', function () {
 | 
					 | 
				
			||||||
        // Update the password strength bar even if we aren't validating
 | 
					 | 
				
			||||||
        // the field yet.
 | 
					 | 
				
			||||||
        common.password_quality($(this).val(), $('#pw_strength .bar'), $(this));
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $("#send_confirm").validate({
 | 
					    $("#send_confirm").validate({
 | 
				
			||||||
        errorElement: "div",
 | 
					        errorElement: "div",
 | 
				
			||||||
        errorPlacement: function (error) {
 | 
					        errorPlacement: function (error) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user