diff js/modules/app.js @ 59:440c8e2d776d

dashboard now auto-authenticated via cached form field password on firefox, if available.
author Atul Varma <avarma@mozilla.com>
date Sun, 25 Apr 2010 01:21:28 -0700
parents f9001601bed6
children 07d3d1560b93
line wrap: on
line diff
--- a/js/modules/app.js	Sun Apr 25 00:51:07 2010 -0700
+++ b/js/modules/app.js	Sun Apr 25 01:21:28 2010 -0700
@@ -2,6 +2,11 @@
   var callbacks = [];
   var username;
   var password;
+  var passwordProvider;
+
+  exports.setPasswordProvider = function setPasswordProvider(pp) {
+    passwordProvider = pp;
+  };
 
   exports.whenChanged = function whenChanged(cb) {
     callbacks.push(cb);
@@ -20,6 +25,11 @@
   };
 
   exports.set = function set(newUsername, newPassword) {
+    if ((newUsername && newUsername != "") &&
+        (!newPassword || newPassword == "") &&
+        (passwordProvider))
+      newPassword = passwordProvider(newUsername);
+
     if (newUsername == username && newPassword == password)
       return;
 
@@ -52,6 +62,8 @@
 
 Require.modules["app/ui/login-form"] = function(exports, require) {
   var $ = require("jQuery");
+  var cachedUsername = $("#login .username").val();
+  var cachedPassword = $("#login .password").val();
 
   $("#login form").submit(
     function(event) {
@@ -68,6 +80,13 @@
         usernameField.val(user.username);
     });
 
+  require("app/login").setPasswordProvider(
+    function maybeGetCachedPasswordFromForm(username) {
+      if (cachedUsername == username)
+        return cachedPassword;
+      return "";
+    });
+
   require("app/ui").whenStarted(
     function maybeShowLoginForm() {
       if (!require("app/login").get().isLoggedIn)
@@ -181,7 +200,7 @@
 
     var user = require("app/login").get();
     if (user.username != username)
-      require("app/login").set(username, "");
+      require("app/login").set(username);
   }
 
   exports.init = function init(document) {