comparison 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
comparison
equal deleted inserted replaced
58:f9001601bed6 59:440c8e2d776d
1 Require.modules["app/login"] = function(exports) { 1 Require.modules["app/login"] = function(exports) {
2 var callbacks = []; 2 var callbacks = [];
3 var username; 3 var username;
4 var password; 4 var password;
5 var passwordProvider;
6
7 exports.setPasswordProvider = function setPasswordProvider(pp) {
8 passwordProvider = pp;
9 };
5 10
6 exports.whenChanged = function whenChanged(cb) { 11 exports.whenChanged = function whenChanged(cb) {
7 callbacks.push(cb); 12 callbacks.push(cb);
8 }; 13 };
9 14
18 isAuthenticated: isAuthenticated 23 isAuthenticated: isAuthenticated
19 }; 24 };
20 }; 25 };
21 26
22 exports.set = function set(newUsername, newPassword) { 27 exports.set = function set(newUsername, newPassword) {
28 if ((newUsername && newUsername != "") &&
29 (!newPassword || newPassword == "") &&
30 (passwordProvider))
31 newPassword = passwordProvider(newUsername);
32
23 if (newUsername == username && newPassword == password) 33 if (newUsername == username && newPassword == password)
24 return; 34 return;
25 35
26 username = newUsername; 36 username = newUsername;
27 password = newPassword; 37 password = newPassword;
50 }; 60 };
51 }; 61 };
52 62
53 Require.modules["app/ui/login-form"] = function(exports, require) { 63 Require.modules["app/ui/login-form"] = function(exports, require) {
54 var $ = require("jQuery"); 64 var $ = require("jQuery");
65 var cachedUsername = $("#login .username").val();
66 var cachedPassword = $("#login .password").val();
55 67
56 $("#login form").submit( 68 $("#login form").submit(
57 function(event) { 69 function(event) {
58 event.preventDefault(); 70 event.preventDefault();
59 require("app/login").set($("#login .username").val(), 71 require("app/login").set($("#login .username").val(),
64 require("app/login").whenChanged( 76 require("app/login").whenChanged(
65 function maybeChangeUsernameField(user) { 77 function maybeChangeUsernameField(user) {
66 var usernameField = $("#login .username"); 78 var usernameField = $("#login .username");
67 if (user.isLoggedIn && usernameField.val() != user.username) 79 if (user.isLoggedIn && usernameField.val() != user.username)
68 usernameField.val(user.username); 80 usernameField.val(user.username);
81 });
82
83 require("app/login").setPasswordProvider(
84 function maybeGetCachedPasswordFromForm(username) {
85 if (cachedUsername == username)
86 return cachedPassword;
87 return "";
69 }); 88 });
70 89
71 require("app/ui").whenStarted( 90 require("app/ui").whenStarted(
72 function maybeShowLoginForm() { 91 function maybeShowLoginForm() {
73 if (!require("app/login").get().isLoggedIn) 92 if (!require("app/login").get().isLoggedIn)
179 function setLoginFromHash(location) { 198 function setLoginFromHash(location) {
180 var username = usernameFromHash(location); 199 var username = usernameFromHash(location);
181 200
182 var user = require("app/login").get(); 201 var user = require("app/login").get();
183 if (user.username != username) 202 if (user.username != username)
184 require("app/login").set(username, ""); 203 require("app/login").set(username);
185 } 204 }
186 205
187 exports.init = function init(document) { 206 exports.init = function init(document) {
188 require("app/login").whenChanged( 207 require("app/login").whenChanged(
189 function(user) { 208 function(user) {