Mercurial > bugzilla-dashboard
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) { |