143 function yk_login_validate_reqs(ta) |
143 function yk_login_validate_reqs(ta) |
144 { |
144 { |
145 $(ta.parentNode).remove('p'); |
145 $(ta.parentNode).remove('p'); |
146 yubikey_otp_current = ta.value; |
146 yubikey_otp_current = ta.value; |
147 |
147 |
148 $('h3', ta.parentNode).text($lang.get('yubiauth_msg_validating_otp')); |
148 miniPromptDestroy(ta, true); |
149 |
149 |
150 ajaxPost(makeUrlNS('Special', 'Yubikey'), 'get_flags=' + ta.value.substr(0, 12), function(ajax) |
150 if ( logindata ) |
151 { |
151 { |
152 if ( ajax.readyState == 4 && ajax.status == 200 ) |
152 if ( logindata.mb_object ) |
153 { |
153 { |
154 miniPromptDestroy(ta); |
154 // login window is open |
155 if ( !check_json_response(ajax.responseText) ) |
155 if ( user_level == USER_LEVEL_GUEST ) |
156 { |
156 { |
157 handle_invalid_json(ajax.responseText); |
157 var show_username = response.flags & YK_SEC_NORMAL_USERNAME; |
158 return false; |
158 var show_password = response.flags & YK_SEC_NORMAL_PASSWORD; |
159 } |
159 } |
160 $('h3', ta.parentNode).text($lang.get('yubiauth_msg_otp_valid')); |
160 else |
161 var response = parseJSON(ajax.responseText); |
161 { |
162 if ( response.mode == 'error' ) |
162 var show_username = response.flags & YK_SEC_ELEV_USERNAME; |
163 { |
163 var show_password = response.flags & YK_SEC_ELEV_PASSWORD; |
164 alert('Yubikey server-side processing error: \n' + response.error); |
164 } |
165 return false; |
165 if ( !show_username ) |
166 } |
166 $('#ajax_login_field_username').parent('td').hide().prev().hide(); |
167 if ( logindata ) |
167 if ( !show_password ) |
168 { |
168 $('#ajax_login_field_password').parent('td').hide().prev().hide(); |
169 if ( logindata.mb_object ) |
169 |
170 { |
170 var can_submit = true; |
171 // login window is open |
171 if ( show_username && !$('#ajax_login_field_username').attr('value') ) |
172 if ( user_level == USER_LEVEL_GUEST ) |
172 { |
173 { |
173 $('#ajax_login_field_password').focus(); |
174 var show_username = response.flags & YK_SEC_NORMAL_USERNAME; |
174 can_submit = false; |
175 var show_password = response.flags & YK_SEC_NORMAL_PASSWORD; |
175 } |
176 } |
176 if ( show_password && !$('#ajax_login_field_password').attr('value') ) |
177 else |
177 { |
178 { |
178 if ( can_submit ) |
179 var show_username = response.flags & YK_SEC_ELEV_USERNAME; |
179 { |
180 var show_password = response.flags & YK_SEC_ELEV_PASSWORD; |
180 $('#ajax_login_field_password').focus(); |
181 } |
181 } |
182 if ( !show_username ) |
182 can_submit = false; |
183 $('#ajax_login_field_username').parent('td').hide().prev().hide(); |
183 } |
184 if ( !show_password ) |
184 |
185 $('#ajax_login_field_password').parent('td').hide().prev().hide(); |
185 if ( can_submit ) |
186 |
186 { |
187 var can_submit = true; |
187 $('#messageBoxButtons input:button:first').click(); |
188 if ( show_username && !$('#ajax_login_field_username').attr('value') ) |
188 } |
189 { |
189 } |
190 $('#ajax_login_field_password').focus(); |
190 } |
191 can_submit = false; |
|
192 } |
|
193 if ( show_password && !$('#ajax_login_field_password').attr('value') ) |
|
194 { |
|
195 if ( can_submit ) |
|
196 { |
|
197 $('#ajax_login_field_password').focus(); |
|
198 } |
|
199 can_submit = false; |
|
200 } |
|
201 |
|
202 if ( can_submit ) |
|
203 { |
|
204 $('#messageBoxButtons input:button:first').click(); |
|
205 } |
|
206 } |
|
207 } |
|
208 } |
|
209 }); |
|
210 } |
191 } |
211 |
192 |
212 function yk_clear(field_id, status_id) |
193 function yk_clear(field_id, status_id) |
213 { |
194 { |
214 var field = document.getElementById(field_id); |
195 var field = document.getElementById(field_id); |