]>
git.ipfire.org Git - ipfire.org.git/blob - src/templates/auth/modules/password.js
2 var progress
= $("#password-strength");
3 var warning
= $("#password-warning");
4 var feedback
= $("#password-feedback");
6 var password1
= $("#password1");
7 var password2
= $("#password2");
9 var form
= password1
.parents("form");
10 var submit
= form
.find(":submit");
12 // Fetch words that are common to the user
13 var user_inputs
= password1
.data("user-input").split(" ");
17 password1
.keyup(function(event
) {
18 form
.trigger("change");
21 password2
.keyup(function(event
) {
22 form
.trigger("change");
25 form
.on("change", function() {
26 submit
.prop("disabled", true);
28 var val1
= password1
.val();
29 var val2
= password2
.val();
32 // Estimate password quality
33 quality
= zxcvbn(val1
, user_inputs
);
35 // Convert score into percentage
36 var percentage
= (quality
.score
+ 1) * 20;
38 // Set progress bar width
39 progress
.val(percentage
);
41 // Clear all previous backgrounds
42 progress
.removeClass([
43 "is-success", "is-warning", "is-danger"
46 // Make progress bar show in the right colour
47 switch (quality
.score
) {
51 progress
.addClass("is-danger");
55 progress
.addClass("is-warning");
59 progress
.addClass("is-success");
66 if (quality
.feedback
) {
67 if (val2
&& (val1
!== val2
)) {
68 feedback
.append("<li>{{ _("Passwords
do not match
") }}</li>");
71 if (quality
.feedback
.warning
) {
72 feedback
.append("<li>" + quality
.feedback
.warning
+ "</li>");
75 $.each(quality
.feedback
.suggestions
, function (i
, suggestion
) {
76 feedback
.append("<li>" + suggestion
+ "</li>");
86 // We cannot submit the form when password2 is empty
90 if (!quality
|| quality
.score
< 3)
93 // They match, so we can enable the submit button
94 submit
.prop("disabled", false);