From 720914efdf15d39968b62f17a45843bc7834030c Mon Sep 17 00:00:00 2001
From: Ben Adida <ben@adida.net>
Date: Thu, 14 Jul 2011 10:03:26 -0700
Subject: [PATCH] added password notification to forgot password

---
 .../dialog/controllers/dialog_controller.js   | 24 +++++++++++++++++++
 .../static/dialog/views/forgotpassword.ejs    | 17 +++++++------
 2 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/browserid/static/dialog/controllers/dialog_controller.js b/browserid/static/dialog/controllers/dialog_controller.js
index 50a802e55..e670ef508 100644
--- a/browserid/static/dialog/controllers/dialog_controller.js
+++ b/browserid/static/dialog/controllers/dialog_controller.js
@@ -279,6 +279,30 @@ $.Controller("Dialog", {}, {
     doForgotPassword: function() {
       $('#dialog').html("views/forgotpassword.ejs", {});
       $('#bottom-bar').html("views/bottom-continue.ejs", {});
+
+      var self=this;
+      function checkInput() {
+        var pass = $("#password_input").val();
+        var match = pass === $("#password_verify_input").val();
+        self.find('.passwordnote').hide();
+        if (!match) {
+          self.find('#passwords_different').show();
+        } else {
+          if (!pass) {
+            self.find('#enter_a_password').show();
+          } else if (pass.length < 5) {
+            self.find('#password_too_short').show();
+          } else {
+            self.find('#password_ok').show();
+          }
+        }
+      }
+      
+      // watch input dialogs
+      self.find("input").unbind('keyup').bind('keyup', checkInput);
+      
+      // do a check at load time, in case the user is using the back button (enables the continue button!)
+      checkInput();
     },
 
     doWait: function(title, message) {
diff --git a/browserid/static/dialog/views/forgotpassword.ejs b/browserid/static/dialog/views/forgotpassword.ejs
index eb09e3eca..8674d5403 100644
--- a/browserid/static/dialog/views/forgotpassword.ejs
+++ b/browserid/static/dialog/views/forgotpassword.ejs
@@ -2,19 +2,22 @@
     <div class="summary"><b>Forgot your password?</b>  No problem!  Enter your email address, pick a new password, and we'll get you set up again!</div>
     <div class="input">
       <div class="label"> Email </div>
-      <div class="input"> <input type="text" id="email_input"></input></div>
-      <div class="note"></div>
+      <div class="input"> <input id="email_input" type="text"></input></div>
+      <div class="note" id="email_input_note" style="display:none;"><span class="good">Not registered</span></div>
     </div>
     <div class="input">
       <div class="label"> Password </div>
-      <div class="input"> <input type="password" id="password_input"></input></div>
+      <div class="input"> <input id="password_input" type="password"></input></div>
     </div>
     <div class="input">
       <div class="label"> Verify </div>
-      <div class="input"> <input type="password" id="password_verify_input"></input></div>
-      <div class="note"><span class="bad">Enter a password</span></div>
+      <div class="input"> <input id="password_verify_input" type="password"></input></div>
+      <div class="note passwordnote" id="enter_a_password"><span class="bad">Enter a password</span></div>
+      <div class="note passwordnote" id="passwords_different" style="display:none;"><span class="bad">Passwords different</span></div>
+      <div class="note passwordnote" id="password_too_short" style="display:none;"><span class="bad">Password too short</span></div>
+      <div class="note passwordnote" id="password_ok" style="display:none;"><span class="good">Password OK</span></div>
     </div>
-    <div class="attention_lame" style="display:none;">
-      <span id="in_use_email">Email</span> in use, If this email is yours you can <a href="#" id="signin_hint">sign in</a> with it?
+    <div class="attention_lame" style="display:none;" id="emailinuse_message">
+      <span id="in_use_email">Email</span> in use, If this email is yours you can <a href="#">sign in</a> with it?
     </div>
   </div>
-- 
GitLab