--- a/pytask/static/js/login.js Tue Jan 18 14:34:26 2011 +0530
+++ b/pytask/static/js/login.js Tue Jan 18 14:37:06 2011 +0530
@@ -1,17 +1,42 @@
var login_user = function (login_url) {
+
+ /* Function that handles the post login request changes. */
+ var process_login_response = function (raw_data) {
+ /* We expect an exception when login fails. Read comment with catch. */
+ try {
+ data = $.parseJSON(raw_data);
+ if (data.authentication == "success") {
+ /* Login succeeded */
+ if (data.markup) {
+ /* Replace the HTML with the user actions since
+ * the request came from a URL other than logout page */
+ $("div#useraction").replaceWith(data.markup);
+ } else if (data.redirect) {
+ /* Reload the page to the pytask home page since
+ * the login request came from logout page. This
+ * is done because the logout text says you have
+ * been logged out, which will be awkward after
+ * user re-logs in. */
+ window.location.href=data.redirect;
+ }
+ }
+ } catch (e) {
+ /* Login failed so the login view returned to the same view as
+ * the existing page from which the call was made and thus we
+ * get html. So let us display the error. */
+ $('div #loginform #error').show();
+ }
+ }
+
+
+ /* Attach a handler which does the form post upon the submit
+ * button is pressed on the login form. */
$(document).ready(function () {
$('#form_login').submit(function() {
$.post(
login_url,
$("#form_login").serialize(),
- function (raw_data) {
- data = $.parseJSON(raw_data);
- alert(data);
- if (data.authentication == "success") {
- $("div#useraction").replaceWith(data.markup);
- alert(data.markup);
- }
- });
+ process_login_response);
return false;
});
});