author | Dan |
Sat, 07 Jun 2008 12:43:57 -0400 | |
changeset 561 | e53cf8b1d942 |
parent 550 | 685e839d934e |
child 582 | a38876c0793c |
permissions | -rw-r--r-- |
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
1 |
/* |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
2 |
* AJAX-based intelligent login interface |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
3 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
4 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
5 |
/* |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
6 |
* FRONTEND |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
7 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
8 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
9 |
/** |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
10 |
* Performs a logon as a regular member. |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
11 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
12 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
13 |
function ajaxLogonToMember() |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
14 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
15 |
// IE <6 pseudo-compatibility |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
16 |
if ( KILL_SWITCH ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
17 |
return true; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
18 |
if ( auth_level >= USER_LEVEL_MEMBER ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
19 |
return true; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
20 |
ajaxLoginInit(function(k) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
21 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
22 |
window.location.reload(); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
23 |
}, USER_LEVEL_MEMBER); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
24 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
25 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
26 |
/** |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
27 |
* Authenticates to the highest level the current user is allowed to go to. |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
28 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
29 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
30 |
function ajaxLogonToElev() |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
31 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
32 |
if ( auth_level == user_level ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
33 |
return true; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
34 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
35 |
ajaxLoginInit(function(k) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
36 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
37 |
ENANO_SID = k; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
38 |
var url = String(' ' + window.location).substr(1); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
39 |
url = append_sid(url); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
40 |
window.location = url; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
41 |
}, user_level); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
42 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
43 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
44 |
/* |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
45 |
* BACKEND |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
46 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
47 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
48 |
/** |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
49 |
* Holding object for various AJAX authentication information. |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
50 |
* @var object |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
51 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
52 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
53 |
var logindata = {}; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
54 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
55 |
/** |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
56 |
* Path to the image used to indicate loading progress |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
57 |
* @var string |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
58 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
59 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
60 |
if ( !ajax_login_loadimg_path ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
61 |
var ajax_login_loadimg_path = false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
62 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
63 |
if ( !ajax_login_successimg_path ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
64 |
var ajax_login_successimg_path = false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
65 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
66 |
/** |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
67 |
* Status variables |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
68 |
* @var int |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
69 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
70 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
71 |
var AJAX_STATUS_LOADING_KEY = 1; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
72 |
var AJAX_STATUS_GENERATING_KEY = 2; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
73 |
var AJAX_STATUS_LOGGING_IN = 3; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
74 |
var AJAX_STATUS_SUCCESS = 4; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
75 |
var AJAX_STATUS_DESTROY = 65535; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
76 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
77 |
/** |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
78 |
* State constants |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
79 |
* @var int |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
80 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
81 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
82 |
var AJAX_STATE_EARLY_INIT = 1; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
83 |
var AJAX_STATE_LOADING_KEY = 2; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
84 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
85 |
/** |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
86 |
* Performs the AJAX request to get an encryption key and from there spawns the login form. |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
87 |
* @param function The function that will be called once authentication completes successfully. |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
88 |
* @param int The security level to authenticate at - see http://docs.enanocms.org/Help:Appendix_B |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
89 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
90 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
91 |
function ajaxLoginInit(call_on_finish, user_level) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
92 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
93 |
logindata = {}; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
94 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
95 |
var title = ( user_level > USER_LEVEL_MEMBER ) ? $lang.get('user_login_ajax_prompt_title_elev') : $lang.get('user_login_ajax_prompt_title'); |
550
685e839d934e
Added ability to delete the draft revision; [SECURITY] fixed lack of permission check on draft save; renamed messagebox() constructor to MessageBox() (backward compat. maintained)
Dan
parents:
532
diff
changeset
|
96 |
logindata.mb_object = new MessageBox(MB_OKCANCEL | MB_ICONLOCK, title, ''); |
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
97 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
98 |
logindata.mb_object.onclick['Cancel'] = function() |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
99 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
100 |
// Hide the error message and captcha |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
101 |
if ( document.getElementById('ajax_login_error_box') ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
102 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
103 |
document.getElementById('ajax_login_error_box').parentNode.removeChild(document.getElementById('ajax_login_error_box')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
104 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
105 |
if ( document.getElementById('autoCaptcha') ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
106 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
107 |
var to = fly_out_top(document.getElementById('autoCaptcha'), false, true); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
108 |
setTimeout(function() { |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
109 |
var d = document.getElementById('autoCaptcha'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
110 |
d.parentNode.removeChild(d); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
111 |
}, to); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
112 |
} |
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
461
diff
changeset
|
113 |
// Ask the server to clean our key |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
461
diff
changeset
|
114 |
ajaxLoginPerformRequest({ |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
461
diff
changeset
|
115 |
mode: 'clean_key', |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
461
diff
changeset
|
116 |
key_aes: logindata.key_aes, |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
461
diff
changeset
|
117 |
key_dh: logindata.key_dh |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
461
diff
changeset
|
118 |
}); |
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
119 |
}; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
120 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
121 |
logindata.mb_object.onbeforeclick['OK'] = function() |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
122 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
123 |
ajaxLoginSubmitForm(); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
124 |
return true; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
125 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
126 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
127 |
// Fetch the inner content area |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
128 |
logindata.mb_inner = document.getElementById('messageBox').getElementsByTagName('div')[0]; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
129 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
130 |
// Initialize state |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
131 |
logindata.showing_status = false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
132 |
logindata.user_level = user_level; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
133 |
logindata.successfunc = call_on_finish; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
134 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
135 |
// Build the "loading" window |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
136 |
ajaxLoginSetStatus(AJAX_STATUS_LOADING_KEY); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
137 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
138 |
// Request the key |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
139 |
ajaxLoginPerformRequest({ mode: 'getkey' }); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
140 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
141 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
142 |
/** |
532
03429d7b1537
Finally fixed link coloring settings in Oxygen Bleu; added compatibility wrapper for people that "ajaxLogonInit" over "ajaxLoginInit"
Dan
parents:
509
diff
changeset
|
143 |
* For compatibility only. |
03429d7b1537
Finally fixed link coloring settings in Oxygen Bleu; added compatibility wrapper for people that "ajaxLogonInit" over "ajaxLoginInit"
Dan
parents:
509
diff
changeset
|
144 |
*/ |
03429d7b1537
Finally fixed link coloring settings in Oxygen Bleu; added compatibility wrapper for people that "ajaxLogonInit" over "ajaxLoginInit"
Dan
parents:
509
diff
changeset
|
145 |
|
03429d7b1537
Finally fixed link coloring settings in Oxygen Bleu; added compatibility wrapper for people that "ajaxLogonInit" over "ajaxLoginInit"
Dan
parents:
509
diff
changeset
|
146 |
function ajaxLogonInit(call_on_finish, user_level) |
03429d7b1537
Finally fixed link coloring settings in Oxygen Bleu; added compatibility wrapper for people that "ajaxLogonInit" over "ajaxLoginInit"
Dan
parents:
509
diff
changeset
|
147 |
{ |
03429d7b1537
Finally fixed link coloring settings in Oxygen Bleu; added compatibility wrapper for people that "ajaxLogonInit" over "ajaxLoginInit"
Dan
parents:
509
diff
changeset
|
148 |
return ajaxLoginInit(call_on_finish, user_level); |
03429d7b1537
Finally fixed link coloring settings in Oxygen Bleu; added compatibility wrapper for people that "ajaxLogonInit" over "ajaxLoginInit"
Dan
parents:
509
diff
changeset
|
149 |
} |
03429d7b1537
Finally fixed link coloring settings in Oxygen Bleu; added compatibility wrapper for people that "ajaxLogonInit" over "ajaxLoginInit"
Dan
parents:
509
diff
changeset
|
150 |
|
03429d7b1537
Finally fixed link coloring settings in Oxygen Bleu; added compatibility wrapper for people that "ajaxLogonInit" over "ajaxLoginInit"
Dan
parents:
509
diff
changeset
|
151 |
/** |
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
152 |
* Sets the contents of the AJAX login window to the appropriate status message. |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
153 |
* @param int One of AJAX_STATUS_* |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
154 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
155 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
156 |
function ajaxLoginSetStatus(status) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
157 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
158 |
if ( !logindata.mb_inner ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
159 |
return false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
160 |
if ( logindata.showing_status ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
161 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
162 |
var div = document.getElementById('ajax_login_status'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
163 |
if ( div ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
164 |
logindata.mb_inner.removeChild(div); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
165 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
166 |
switch(status) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
167 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
168 |
case AJAX_STATUS_LOADING_KEY: |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
169 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
170 |
// Create the status div |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
171 |
var div = document.createElement('div'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
172 |
div.id = 'ajax_login_status'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
173 |
div.style.marginTop = '10px'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
174 |
div.style.textAlign = 'center'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
175 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
176 |
// The circly ball ajaxy image + status message |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
177 |
var status_msg = $lang.get('user_login_ajax_fetching_key'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
178 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
179 |
// Insert the status message |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
180 |
div.appendChild(document.createTextNode(status_msg)); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
181 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
182 |
// Append a br or two to space things properly |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
183 |
div.appendChild(document.createElement('br')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
184 |
div.appendChild(document.createElement('br')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
185 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
186 |
var img = document.createElement('img'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
187 |
img.src = ( ajax_login_loadimg_path ) ? ajax_login_loadimg_path : scriptPath + '/images/loading-big.gif'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
188 |
div.appendChild(img); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
189 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
190 |
// Another coupla brs |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
191 |
div.appendChild(document.createElement('br')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
192 |
div.appendChild(document.createElement('br')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
193 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
194 |
// The link to the full login form |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
195 |
var small = document.createElement('small'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
196 |
small.innerHTML = $lang.get('user_login_ajax_link_fullform', { link_full_form: makeUrlNS('Special', 'Login/' + title) }); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
197 |
div.appendChild(small); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
198 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
199 |
// Insert the entire message into the login window |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
200 |
logindata.mb_inner.innerHTML = ''; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
201 |
logindata.mb_inner.appendChild(div); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
202 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
203 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
204 |
case AJAX_STATUS_GENERATING_KEY: |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
205 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
206 |
// Create the status div |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
207 |
var div = document.createElement('div'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
208 |
div.id = 'ajax_login_status'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
209 |
div.style.marginTop = '10px'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
210 |
div.style.textAlign = 'center'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
211 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
212 |
// The circly ball ajaxy image + status message |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
213 |
var status_msg = $lang.get('user_login_ajax_generating_key'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
214 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
215 |
// Insert the status message |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
216 |
div.appendChild(document.createTextNode(status_msg)); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
217 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
218 |
// Append a br or two to space things properly |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
219 |
div.appendChild(document.createElement('br')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
220 |
div.appendChild(document.createElement('br')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
221 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
222 |
var img = document.createElement('img'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
223 |
img.src = ( ajax_login_loadimg_path ) ? ajax_login_loadimg_path : scriptPath + '/images/loading-big.gif'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
224 |
div.appendChild(img); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
225 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
226 |
// Another coupla brs |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
227 |
div.appendChild(document.createElement('br')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
228 |
div.appendChild(document.createElement('br')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
229 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
230 |
// The link to the full login form |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
231 |
var small = document.createElement('small'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
232 |
small.innerHTML = $lang.get('user_login_ajax_link_fullform_dh', { link_full_form: makeUrlNS('Special', 'Login/' + title) }); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
233 |
div.appendChild(small); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
234 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
235 |
// Insert the entire message into the login window |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
236 |
logindata.mb_inner.innerHTML = ''; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
237 |
logindata.mb_inner.appendChild(div); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
238 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
239 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
240 |
case AJAX_STATUS_LOGGING_IN: |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
241 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
242 |
// Create the status div |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
243 |
var div = document.createElement('div'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
244 |
div.id = 'ajax_login_status'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
245 |
div.style.marginTop = '10px'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
246 |
div.style.textAlign = 'center'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
247 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
248 |
// The circly ball ajaxy image + status message |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
249 |
var status_msg = $lang.get('user_login_ajax_loggingin'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
250 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
251 |
// Insert the status message |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
252 |
div.appendChild(document.createTextNode(status_msg)); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
253 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
254 |
// Append a br or two to space things properly |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
255 |
div.appendChild(document.createElement('br')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
256 |
div.appendChild(document.createElement('br')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
257 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
258 |
var img = document.createElement('img'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
259 |
img.src = ( ajax_login_loadimg_path ) ? ajax_login_loadimg_path : scriptPath + '/images/loading-big.gif'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
260 |
div.appendChild(img); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
261 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
262 |
// Insert the entire message into the login window |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
263 |
logindata.mb_inner.innerHTML = ''; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
264 |
logindata.mb_inner.appendChild(div); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
265 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
266 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
267 |
case AJAX_STATUS_SUCCESS: |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
268 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
269 |
// Create the status div |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
270 |
var div = document.createElement('div'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
271 |
div.id = 'ajax_login_status'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
272 |
div.style.marginTop = '10px'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
273 |
div.style.textAlign = 'center'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
274 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
275 |
// The circly ball ajaxy image + status message |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
276 |
var status_msg = $lang.get('user_login_success_short'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
277 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
278 |
// Insert the status message |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
279 |
div.appendChild(document.createTextNode(status_msg)); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
280 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
281 |
// Append a br or two to space things properly |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
282 |
div.appendChild(document.createElement('br')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
283 |
div.appendChild(document.createElement('br')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
284 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
285 |
var img = document.createElement('img'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
286 |
img.src = ( ajax_login_successimg_path ) ? ajax_login_successimg_path : scriptPath + '/images/check.png'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
287 |
div.appendChild(img); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
288 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
289 |
// Insert the entire message into the login window |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
290 |
logindata.mb_inner.innerHTML = ''; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
291 |
logindata.mb_inner.appendChild(div); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
292 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
293 |
case AJAX_STATUS_DESTROY: |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
294 |
case null: |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
295 |
case undefined: |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
296 |
logindata.showing_status = false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
297 |
return null; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
298 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
299 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
300 |
logindata.showing_status = true; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
301 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
302 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
303 |
/** |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
304 |
* Performs an AJAX logon request to the server and calls ajaxLoginProcessResponse() on the result. |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
305 |
* @param object JSON packet to send |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
306 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
307 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
308 |
function ajaxLoginPerformRequest(json) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
309 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
310 |
json = toJSONString(json); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
311 |
json = ajaxEscape(json); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
312 |
ajaxPost(makeUrlNS('Special', 'Login/action.json'), 'r=' + json, function() |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
313 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
314 |
if ( ajax.readyState == 4 && ajax.status == 200 ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
315 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
316 |
// parse response |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
317 |
var response = String(ajax.responseText + ''); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
318 |
if ( response.substr(0, 1) != '{' ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
319 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
320 |
handle_invalid_json(response); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
321 |
return false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
322 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
323 |
response = parseJSON(response); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
324 |
ajaxLoginProcessResponse(response); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
325 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
326 |
}, true); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
327 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
328 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
329 |
/** |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
330 |
* Processes a response from the login server |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
331 |
* @param object JSON response |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
332 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
333 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
334 |
function ajaxLoginProcessResponse(response) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
335 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
336 |
// Did the server send a plaintext error? |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
337 |
if ( response.mode == 'error' ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
338 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
339 |
logindata.mb_object.destroy(); |
478 | 340 |
var error_msg = $lang.get('user_' + ( response.error.toLowerCase() )); |
550
685e839d934e
Added ability to delete the draft revision; [SECURITY] fixed lack of permission check on draft save; renamed messagebox() constructor to MessageBox() (backward compat. maintained)
Dan
parents:
532
diff
changeset
|
341 |
new MessageBox(MB_ICONSTOP | MB_OK, $lang.get('user_err_login_generic_title'), error_msg); |
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
342 |
return false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
343 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
344 |
// Main mode switch |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
345 |
switch ( response.mode ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
346 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
347 |
case 'build_box': |
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
461
diff
changeset
|
348 |
// Rid ourselves of any loading windows |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
461
diff
changeset
|
349 |
ajaxLoginSetStatus(AJAX_STATUS_DESTROY); |
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
350 |
// The server wants us to build the login form, all the information is there |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
351 |
ajaxLoginBuildForm(response); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
352 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
353 |
case 'login_success': |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
354 |
ajaxLoginSetStatus(AJAX_STATUS_SUCCESS); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
355 |
logindata.successfunc(response.key); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
356 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
357 |
case 'login_failure': |
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
461
diff
changeset
|
358 |
// Rid ourselves of any loading windows |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
461
diff
changeset
|
359 |
ajaxLoginSetStatus(AJAX_STATUS_DESTROY); |
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
360 |
document.getElementById('messageBox').style.backgroundColor = '#C0C0C0'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
361 |
var mb_parent = document.getElementById('messageBox').parentNode; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
362 |
new Spry.Effect.Shake(mb_parent, {duration: 1500}).start(); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
363 |
setTimeout(function() |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
364 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
365 |
document.getElementById('messageBox').style.backgroundColor = '#FFF'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
366 |
ajaxLoginBuildForm(response.respawn_info); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
367 |
ajaxLoginShowFriendlyError(response); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
368 |
}, 2500); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
369 |
break; |
472
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
370 |
case 'login_success_reset': |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
371 |
var conf = confirm($lang.get('user_login_ajax_msg_used_temp_pass')); |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
372 |
if ( conf ) |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
373 |
{ |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
374 |
var url = makeUrlNS('Special', 'PasswordReset/stage2/' + response.user_id + '/' + response.temp_password); |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
375 |
window.location = url; |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
376 |
} |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
377 |
else |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
378 |
{ |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
379 |
// treat as a failure |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
380 |
ajaxLoginSetStatus(AJAX_STATUS_DESTROY); |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
381 |
document.getElementById('messageBox').style.backgroundColor = '#C0C0C0'; |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
382 |
var mb_parent = document.getElementById('messageBox').parentNode; |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
383 |
new Spry.Effect.Shake(mb_parent, {duration: 1500}).start(); |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
384 |
setTimeout(function() |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
385 |
{ |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
386 |
document.getElementById('messageBox').style.backgroundColor = '#FFF'; |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
387 |
ajaxLoginBuildForm(response.respawn_info); |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
388 |
// don't show an error here, just silently respawn |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
389 |
}, 2500); |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
390 |
} |
bc4b58034f4d
Implemented password reset (albeit hackishly) into the new login API; added dummy window.console object to hopefully reduce errors when Firebug isn't around; fixed the longstanding ACL dismiss/close button bug; fixed a couple undefined variables in mailer; fixed PHP error on attempted opening of /dev/(u)random in rijndael.php; clarified documentation for PageProcessor::update_page(); fixed some logic problems in theme ACL code; disabled CAPTCHA debug
Dan
parents:
471
diff
changeset
|
391 |
break; |
471
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
461
diff
changeset
|
392 |
case 'noop': |
7906fb190fc1
Implemented all security features on theme disabling and ACLs; added clean_key mode to login API to clean unused encryption keys
Dan
parents:
461
diff
changeset
|
393 |
break; |
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
394 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
395 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
396 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
397 |
/* |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
398 |
* RESPONSE HANDLERS |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
399 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
400 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
401 |
/** |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
402 |
* Builds the login form. |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
403 |
* @param object Metadata to build off of |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
404 |
*/ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
405 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
406 |
function ajaxLoginBuildForm(data) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
407 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
408 |
// let's hope this effectively preloads the image... |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
409 |
var _ = document.createElement('img'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
410 |
_.src = ( ajax_login_successimg_path ) ? ajax_login_successimg_path : scriptPath + '/images/check.png'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
411 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
412 |
var div = document.createElement('div'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
413 |
div.id = 'ajax_login_form'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
414 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
415 |
var show_captcha = ( data.locked_out && data.lockout_info.lockout_policy == 'captcha' ) ? data.lockout_info.captcha : false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
416 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
417 |
// text displayed on re-auth |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
418 |
if ( logindata.user_level > USER_LEVEL_MEMBER ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
419 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
420 |
div.innerHTML += $lang.get('user_login_ajax_prompt_body_elev') + '<br /><br />'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
421 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
422 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
423 |
// Create the form |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
424 |
var form = document.createElement('form'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
425 |
form.action = 'javascript:void(ajaxLoginSubmitForm());'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
426 |
form.onsubmit = function() |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
427 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
428 |
ajaxLoginSubmitForm(); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
429 |
return false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
430 |
} |
460 | 431 |
if ( IE ) |
432 |
{ |
|
433 |
form.style.marginTop = '-20px'; |
|
434 |
} |
|
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
435 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
436 |
// Using tables to wrap form elements because it results in a |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
437 |
// more visually appealing form. Yes, tables suck. I don't really |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
438 |
// care - they make forms look good. |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
439 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
440 |
var table = document.createElement('table'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
441 |
table.style.margin = '0 auto'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
442 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
443 |
// Field - username |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
444 |
var tr1 = document.createElement('tr'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
445 |
var td1_1 = document.createElement('td'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
446 |
td1_1.appendChild(document.createTextNode($lang.get('user_login_field_username') + ':')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
447 |
tr1.appendChild(td1_1); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
448 |
var td1_2 = document.createElement('td'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
449 |
var f_username = document.createElement('input'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
450 |
f_username.id = 'ajax_login_field_username'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
451 |
f_username.name = 'ajax_login_field_username'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
452 |
f_username.type = 'text'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
453 |
f_username.size = '25'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
454 |
if ( data.username ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
455 |
f_username.value = data.username; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
456 |
td1_2.appendChild(f_username); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
457 |
tr1.appendChild(td1_2); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
458 |
table.appendChild(tr1); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
459 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
460 |
// Field - password |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
461 |
var tr2 = document.createElement('tr'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
462 |
var td2_1 = document.createElement('td'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
463 |
td2_1.appendChild(document.createTextNode($lang.get('user_login_field_password') + ':')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
464 |
tr2.appendChild(td2_1); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
465 |
var td2_2 = document.createElement('td'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
466 |
var f_password = document.createElement('input'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
467 |
f_password.id = 'ajax_login_field_password'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
468 |
f_password.name = 'ajax_login_field_username'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
469 |
f_password.type = 'password'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
470 |
f_password.size = '25'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
471 |
if ( !show_captcha ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
472 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
473 |
f_password.onkeyup = function(e) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
474 |
{ |
461 | 475 |
if ( !e ) |
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
476 |
e = window.event; |
461 | 477 |
if ( !e && IE ) |
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
478 |
return true; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
479 |
if ( e.keyCode == 13 ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
480 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
481 |
ajaxLoginSubmitForm(); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
482 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
483 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
484 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
485 |
td2_2.appendChild(f_password); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
486 |
tr2.appendChild(td2_2); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
487 |
table.appendChild(tr2); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
488 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
489 |
// Field - captcha |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
490 |
if ( show_captcha ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
491 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
492 |
var tr3 = document.createElement('tr'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
493 |
var td3_1 = document.createElement('td'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
494 |
td3_1.appendChild(document.createTextNode($lang.get('user_login_field_captcha') + ':')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
495 |
tr3.appendChild(td3_1); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
496 |
var td3_2 = document.createElement('td'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
497 |
var f_captcha = document.createElement('input'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
498 |
f_captcha.id = 'ajax_login_field_captcha'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
499 |
f_captcha.name = 'ajax_login_field_username'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
500 |
f_captcha.type = 'text'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
501 |
f_captcha.size = '25'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
502 |
f_captcha.onkeyup = function(e) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
503 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
504 |
if ( !e ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
505 |
e = window.event; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
506 |
if ( !e.keyCode ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
507 |
return true; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
508 |
if ( e.keyCode == 13 ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
509 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
510 |
ajaxLoginSubmitForm(); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
511 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
512 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
513 |
td3_2.appendChild(f_captcha); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
514 |
tr3.appendChild(td3_2); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
515 |
table.appendChild(tr3); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
516 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
517 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
518 |
// Done building the main part of the form |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
519 |
form.appendChild(table); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
520 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
521 |
// Field: enable Diffie Hellman |
509
175df10e0b56
Added a copy of Firebug Lite for debugging purposes. License is uncertain but being treated as MPL. (If is is not MPL then it is under something more permissive that permits relicensing anyway)
Dan
parents:
478
diff
changeset
|
522 |
if ( IE || is_iPhone ) |
460 | 523 |
{ |
524 |
var lbl_dh = document.createElement('span'); |
|
525 |
lbl_dh.style.fontSize = 'smaller'; |
|
526 |
lbl_dh.style.display = 'block'; |
|
527 |
lbl_dh.style.textAlign = 'center'; |
|
528 |
lbl_dh.innerHTML = $lang.get('user_login_ajax_check_dh_ie'); |
|
529 |
form.appendChild(lbl_dh); |
|
530 |
} |
|
531 |
else |
|
532 |
{ |
|
533 |
var lbl_dh = document.createElement('label'); |
|
534 |
lbl_dh.style.fontSize = 'smaller'; |
|
535 |
lbl_dh.style.display = 'block'; |
|
536 |
lbl_dh.style.textAlign = 'center'; |
|
537 |
var check_dh = document.createElement('input'); |
|
538 |
check_dh.type = 'checkbox'; |
|
539 |
// this onclick attribute changes the cookie whenever the checkbox or label is clicked |
|
540 |
check_dh.setAttribute('onclick', 'var ck = ( this.checked ) ? "enable" : "disable"; createCookie("diffiehellman_login", ck, 3650);'); |
|
541 |
if ( readCookie('diffiehellman_login') != 'disable' ) |
|
542 |
check_dh.setAttribute('checked', 'checked'); |
|
543 |
check_dh.id = 'ajax_login_field_dh'; |
|
544 |
lbl_dh.appendChild(check_dh); |
|
545 |
lbl_dh.innerHTML += $lang.get('user_login_ajax_check_dh'); |
|
546 |
form.appendChild(lbl_dh); |
|
547 |
} |
|
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
548 |
|
460 | 549 |
if ( IE ) |
550 |
{ |
|
551 |
div.innerHTML += form.outerHTML; |
|
552 |
} |
|
553 |
else |
|
554 |
{ |
|
555 |
div.appendChild(form); |
|
556 |
} |
|
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
557 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
558 |
// Diagnostic / help links |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
559 |
// (only displayed in login, not in re-auth) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
560 |
if ( logindata.user_level == USER_LEVEL_MEMBER ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
561 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
562 |
form.style.marginBottom = '10px'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
563 |
var links = document.createElement('small'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
564 |
links.style.display = 'block'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
565 |
links.style.textAlign = 'center'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
566 |
links.innerHTML = ''; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
567 |
if ( !show_captcha ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
568 |
links.innerHTML += $lang.get('user_login_ajax_link_fullform', { link_full_form: makeUrlNS('Special', 'Login/' + title) }) + '<br />'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
569 |
// Always shown |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
570 |
links.innerHTML += $lang.get('user_login_ajax_link_forgotpass', { forgotpass_link: makeUrlNS('Special', 'PasswordReset') }) + '<br />'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
571 |
if ( !show_captcha ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
572 |
links.innerHTML += $lang.get('user_login_createaccount_blurb', { reg_link: makeUrlNS('Special', 'Register') }); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
573 |
div.appendChild(links); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
574 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
575 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
576 |
// Insert the entire form into the login window |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
577 |
logindata.mb_inner.innerHTML = ''; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
578 |
logindata.mb_inner.appendChild(div); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
579 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
580 |
// Post operations: field focus |
460 | 581 |
if ( IE ) |
582 |
{ |
|
583 |
setTimeout( |
|
584 |
function() |
|
585 |
{ |
|
586 |
if ( logindata.loggedin_username ) |
|
587 |
document.getElementById('ajax_login_field_password').focus(); |
|
588 |
else |
|
589 |
document.getElementById('ajax_login_field_username').focus(); |
|
590 |
}, 200); |
|
591 |
} |
|
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
592 |
else |
460 | 593 |
{ |
594 |
if ( data.username ) |
|
595 |
f_password.focus(); |
|
596 |
else |
|
597 |
f_username.focus(); |
|
598 |
} |
|
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
599 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
600 |
// Post operations: show captcha window |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
601 |
if ( show_captcha ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
602 |
ajaxShowCaptcha(show_captcha); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
603 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
604 |
// Post operations: stash encryption keys and All That Jazz(TM) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
605 |
logindata.key_aes = data.aes_key; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
606 |
logindata.key_dh = data.dh_public_key; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
607 |
logindata.captcha_hash = show_captcha; |
460 | 608 |
logindata.loggedin_username = data.username |
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
609 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
610 |
// Are we locked out? If so simulate an error and disable the controls |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
611 |
if ( data.lockout_info.lockout_policy == 'lockout' && data.locked_out ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
612 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
613 |
f_username.setAttribute('disabled', 'disabled'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
614 |
f_password.setAttribute('disabled', 'disabled'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
615 |
var fake_packet = { |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
616 |
error_code: 'locked_out', |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
617 |
respawn_info: data |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
618 |
}; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
619 |
ajaxLoginShowFriendlyError(fake_packet); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
620 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
621 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
622 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
623 |
function ajaxLoginSubmitForm(real, username, password, captcha) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
624 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
625 |
// Perform AES test to make sure it's all working |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
626 |
if ( !aes_self_test() ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
627 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
628 |
alert('BUG: AES self-test failed'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
629 |
login_cache.mb_object.destroy(); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
630 |
return false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
631 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
632 |
// Hide the error message and captcha |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
633 |
if ( document.getElementById('ajax_login_error_box') ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
634 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
635 |
document.getElementById('ajax_login_error_box').parentNode.removeChild(document.getElementById('ajax_login_error_box')); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
636 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
637 |
if ( document.getElementById('autoCaptcha') ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
638 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
639 |
var to = fly_out_top(document.getElementById('autoCaptcha'), false, true); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
640 |
setTimeout(function() { |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
641 |
var d = document.getElementById('autoCaptcha'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
642 |
d.parentNode.removeChild(d); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
643 |
}, to); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
644 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
645 |
// Encryption: preprocessor |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
646 |
if ( real ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
647 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
648 |
var do_dh = true; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
649 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
650 |
else if ( document.getElementById('ajax_login_field_dh') ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
651 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
652 |
var do_dh = document.getElementById('ajax_login_field_dh').checked; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
653 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
654 |
else |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
655 |
{ |
509
175df10e0b56
Added a copy of Firebug Lite for debugging purposes. License is uncertain but being treated as MPL. (If is is not MPL then it is under something more permissive that permits relicensing anyway)
Dan
parents:
478
diff
changeset
|
656 |
if ( IE || is_iPhone ) |
460 | 657 |
{ |
509
175df10e0b56
Added a copy of Firebug Lite for debugging purposes. License is uncertain but being treated as MPL. (If is is not MPL then it is under something more permissive that permits relicensing anyway)
Dan
parents:
478
diff
changeset
|
658 |
// IE/MobileSafari doesn't have this control, continue silently IF the rest |
460 | 659 |
// of the login form is there |
660 |
if ( !document.getElementById('ajax_login_field_username') ) |
|
661 |
{ |
|
662 |
return false; |
|
663 |
} |
|
664 |
} |
|
665 |
else |
|
666 |
{ |
|
667 |
// The user probably clicked ok when the form wasn't in there. |
|
668 |
return false; |
|
669 |
} |
|
436
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
670 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
671 |
if ( !username ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
672 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
673 |
var username = document.getElementById('ajax_login_field_username').value; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
674 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
675 |
if ( !password ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
676 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
677 |
var password = document.getElementById('ajax_login_field_password').value; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
678 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
679 |
if ( !captcha && document.getElementById('ajax_login_field_captcha') ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
680 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
681 |
var captcha = document.getElementById('ajax_login_field_captcha').value; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
682 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
683 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
684 |
if ( do_dh ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
685 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
686 |
ajaxLoginSetStatus(AJAX_STATUS_GENERATING_KEY); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
687 |
if ( !real ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
688 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
689 |
// Wait while the browser updates the login window |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
690 |
setTimeout(function() |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
691 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
692 |
ajaxLoginSubmitForm(true, username, password, captcha); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
693 |
}, 200); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
694 |
return true; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
695 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
696 |
// Perform Diffie Hellman stuff |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
697 |
var dh_priv = dh_gen_private(); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
698 |
var dh_pub = dh_gen_public(dh_priv); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
699 |
var secret = dh_gen_shared_secret(dh_priv, logindata.key_dh); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
700 |
// secret_hash is used to verify that the server guesses the correct secret |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
701 |
var secret_hash = hex_sha1(secret); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
702 |
// crypt_key is the actual AES key |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
703 |
var crypt_key = (hex_sha256(secret)).substr(0, (keySizeInBits / 4)); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
704 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
705 |
else |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
706 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
707 |
var crypt_key = logindata.key_aes; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
708 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
709 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
710 |
ajaxLoginSetStatus(AJAX_STATUS_LOGGING_IN); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
711 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
712 |
// Encrypt the password and username |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
713 |
var userinfo = toJSONString({ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
714 |
username: username, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
715 |
password: password |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
716 |
}); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
717 |
var crypt_key_ba = hexToByteArray(crypt_key); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
718 |
userinfo = stringToByteArray(userinfo); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
719 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
720 |
userinfo = rijndaelEncrypt(userinfo, crypt_key_ba, 'ECB'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
721 |
userinfo = byteArrayToHex(userinfo); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
722 |
// Encrypted username and password (serialized with JSON) are now in the userinfo string |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
723 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
724 |
// Collect other needed information |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
725 |
if ( logindata.captcha_hash ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
726 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
727 |
var captcha_hash = logindata.captcha_hash; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
728 |
var captcha_code = captcha; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
729 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
730 |
else |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
731 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
732 |
var captcha_hash = false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
733 |
var captcha_code = false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
734 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
735 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
736 |
// Ship it across the 'net |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
737 |
if ( do_dh ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
738 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
739 |
var json_packet = { |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
740 |
mode: 'login_dh', |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
741 |
userinfo: userinfo, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
742 |
captcha_code: captcha_code, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
743 |
captcha_hash: captcha_hash, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
744 |
dh_public_key: logindata.key_dh, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
745 |
dh_client_key: dh_pub, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
746 |
dh_secret_hash: secret_hash, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
747 |
level: logindata.user_level |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
748 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
749 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
750 |
else |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
751 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
752 |
var json_packet = { |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
753 |
mode: 'login_aes', |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
754 |
userinfo: userinfo, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
755 |
captcha_code: captcha_code, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
756 |
captcha_hash: captcha_hash, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
757 |
key_aes: hex_md5(crypt_key), |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
758 |
level: logindata.user_level |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
759 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
760 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
761 |
ajaxLoginPerformRequest(json_packet); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
762 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
763 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
764 |
function ajaxLoginShowFriendlyError(response) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
765 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
766 |
if ( !response.respawn_info ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
767 |
return false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
768 |
if ( !response.error_code ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
769 |
return false; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
770 |
var text = ajaxLoginGetErrorText(response); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
771 |
if ( document.getElementById('ajax_login_error_box') ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
772 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
773 |
// console.info('Reusing existing error-box'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
774 |
document.getElementById('ajax_login_error_box').innerHTML = text; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
775 |
return true; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
776 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
777 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
778 |
// console.info('Drawing new error-box'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
779 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
780 |
// calculate position for the top of the box |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
781 |
var mb_bottom = $('messageBoxButtons').Top() + $('messageBoxButtons').Height(); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
782 |
// if the box isn't done flying in yet, just estimate |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
783 |
if ( mb_bottom < ( getHeight() / 2 ) ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
784 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
785 |
mb_bottom = ( getHeight() / 2 ) + 120; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
786 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
787 |
var win_bottom = getHeight() + getScrollOffset(); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
788 |
var top = mb_bottom + ( ( win_bottom - mb_bottom ) / 2 ) - 32; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
789 |
// left position = 0.2 * window_width, seeing as the box is 60% width this works hackishly but nice and quick |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
790 |
var left = getWidth() * 0.2; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
791 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
792 |
// create the div |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
793 |
var errbox = document.createElement('div'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
794 |
errbox.className = 'error-box-mini'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
795 |
errbox.style.position = 'absolute'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
796 |
errbox.style.width = '60%'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
797 |
errbox.style.top = top + 'px'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
798 |
errbox.style.left = left + 'px'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
799 |
errbox.innerHTML = text; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
800 |
errbox.id = 'ajax_login_error_box'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
801 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
802 |
var body = document.getElementsByTagName('body')[0]; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
803 |
body.appendChild(errbox); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
804 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
805 |
|
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
806 |
function ajaxLoginGetErrorText(response) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
807 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
808 |
switch ( response.error_code ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
809 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
810 |
default: |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
811 |
return $lang.get('user_err_' + response.error_code); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
812 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
813 |
case 'locked_out': |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
814 |
if ( response.respawn_info.lockout_info.lockout_policy == 'lockout' ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
815 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
816 |
return $lang.get('user_err_locked_out', { |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
817 |
lockout_threshold: response.respawn_info.lockout_info.lockout_threshold, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
818 |
lockout_duration: response.respawn_info.lockout_info.lockout_duration, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
819 |
time_rem: response.respawn_info.lockout_info.time_rem, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
820 |
plural: ( response.respawn_info.lockout_info.time_rem == 1 ) ? '' : $lang.get('meta_plural'), |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
821 |
captcha_blurb: '' |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
822 |
}); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
823 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
824 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
825 |
case 'invalid_credentials': |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
826 |
var base = $lang.get('user_err_invalid_credentials'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
827 |
if ( response.respawn_info.locked_out ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
828 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
829 |
base += ' '; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
830 |
var captcha_blurb = ''; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
831 |
switch(response.respawn_info.lockout_info.lockout_policy) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
832 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
833 |
case 'captcha': |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
834 |
captcha_blurb = $lang.get('user_err_locked_out_captcha_blurb'); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
835 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
836 |
case 'lockout': |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
837 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
838 |
default: |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
839 |
base += 'WTF? Shouldn\'t be locked out with lockout policy set to disable.'; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
840 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
841 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
842 |
base += $lang.get('user_err_locked_out', { |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
843 |
captcha_blurb: captcha_blurb, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
844 |
lockout_threshold: response.respawn_info.lockout_info.lockout_threshold, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
845 |
lockout_duration: response.respawn_info.lockout_info.lockout_duration, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
846 |
time_rem: response.respawn_info.lockout_info.time_rem, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
847 |
plural: ( response.respawn_info.lockout_info.time_rem == 1 ) ? '' : $lang.get('meta_plural') |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
848 |
}); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
849 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
850 |
else if ( response.respawn_info.lockout_info.lockout_policy == 'lockout' || response.respawn_info.lockout_info.lockout_policy == 'captcha' ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
851 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
852 |
// if we have a lockout policy of captcha or lockout, then warn the user |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
853 |
switch ( response.respawn_info.lockout_info.lockout_policy ) |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
854 |
{ |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
855 |
case 'captcha': |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
856 |
base += $lang.get('user_err_invalid_credentials_lockout', { |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
857 |
fails: response.respawn_info.lockout_info.lockout_fails, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
858 |
lockout_threshold: response.respawn_info.lockout_info.lockout_threshold, |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
859 |
lockout_duration: response.respawn_info.lockout_info.lockout_duration |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
860 |
}); |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
861 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
862 |
case 'lockout': |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
863 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
864 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
865 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
866 |
return base; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
867 |
break; |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
868 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
869 |
} |
242353360e37
Added support for Diffie-Hellman key exchange during login. w00t!
Dan
parents:
diff
changeset
|
870 |