When a username/password auth fails, restore the username/password dialog instead...
[citadel.git] / webcit / static / authmethods.js
index 4bb117c61754347bfae5336af1268757eb1e7ea0..a80543fdbbbedcff21bee5c02313ef7e80c8ad6a 100644 (file)
@@ -1,11 +1,15 @@
 /*
- * Copyright 2010, the Citadel Team
+ * Copyright 2010-2011, the Citadel Team
  * Licensed under the GPL V3
  *
  * JavaScript functions which handle various authentication methods.
  */
 
 
+
+/****************** COMMON CODE ***********************/
+
+
 /*
  * Are we logged in right now?
  */
@@ -19,7 +23,6 @@ function IsLoggedIn() {
 }
 
 
-
 /*
  * Wrapper script to require logging in before completing an action
  */
@@ -48,12 +51,41 @@ function GetLoggedInFirst(destination_url) {
 }
 
 
+/*
+ * tab handler for the login box
+ */
+function authtoggle(show_which_div) {
+       $('authbox_userpass').style.display = 'none';
+       $('authbox_newuser').style.display = 'none';
+       $('authbox_openid').style.display = 'none';
+       $('authbox_google').style.display = 'none';
+       $('authbox_yahoo').style.display = 'none';
+       $('authbox_aol').style.display = 'none';
+       $('authbox_success').style.display = 'none';
+       $(show_which_div).style.display = 'block';
+}
+
+
+/*
+ * Pop out a window for external auth methods
+ * (most of them don't handle inline auth very well)
+ */
+function do_auth_popout(popout_url) {
+       window.open(popout_url, "authpopout", "status=1,toolbar=0,width=600,height=400");
+}
+
+
+
+
+/****************** USERNAME AND PASSWORD ***********************/
+
 /*
  * Attempt login with username/password, called from modal dialog
  */
 function ajax_try_username_and_password() {
 
        $('login_errmsg').innerHTML = "";
+       authtoggle('authbox_success');
         $('ajax_username_password_form').request({
                onSuccess: function(ctdlresult) {
                        if (ctdlresult.responseText.substr(0,1) == '2') {
@@ -61,11 +93,13 @@ function ajax_try_username_and_password() {
                        }
                        else {
                                $('login_errmsg').innerHTML = ctdlresult.responseText.substr(4) ;
+                               authtoggle('authbox_userpass');
                        }
                }
        });
 }
 
+
 /*
  * The user pressed a key while in the username or password box.
  * Is it the enter/return key?  Submit the form.
@@ -83,11 +117,130 @@ function username_and_password_onkeypress(e) {
 }
 
 
+/****************** REGISTER NEW USER ***********************/
+
 /*
- * tab handler for the login box
+ * Attempt to create a new local username/password, called from modal dialog
  */
-function authtoggle(show_which_div) {
-       $('authbox_userpass').style.display = 'none';
-       $('authbox_openid').style.display = 'none';
-       $(show_which_div).style.display = 'block';
+function ajax_try_newuser() {
+
+       $('login_errmsg').innerHTML = "";
+        $('ajax_newuser_form').request({
+               onSuccess: function(ctdlresult) {
+                       if (ctdlresult.responseText.substr(0,1) == '2') {
+                               authtoggle('authbox_success');
+                               window.location = 'pop';
+                       }
+                       else {
+                               $('login_errmsg').innerHTML = ctdlresult.responseText.substr(4) ;
+                       }
+               }
+       });
+}
+
+
+/*
+ * The user pressed a key while in the newuser or newpassword box.
+ * Is it the enter/return key?  Submit the form.
+ */
+function newuser_onkeypress(e) {
+       if (window.event) {             /* IE */
+               keynum = e.keyCode;
+       }
+       else if (e.which) {             /* real browsers */
+               keynum = e.which;
+       }
+       if (keynum == 13) {             /* enter/return key */
+               ajax_try_newuser();
+       }
+}
+
+
+
+
+/****************** OPENID ***********************/
+
+/*
+ * Attempt login with OpenID, called from modal dialog
+ */
+function ajax_try_openid() {
+       $('login_errmsg').innerHTML = "";
+       openid_url = encodeURI($('ajax_openid_form').elements["openid_url"].value);
+       do_auth_popout("openid_login?openid_url=" + openid_url);
+}
+
+
+/*
+ * The user pressed a key while in the openid login box.
+ * Is it the enter/return key?  Submit the form.
+ */
+function openid_onkeypress(e) {
+       if (window.event) {             /* IE */
+               keynum = e.keyCode;
+       }
+       else if (e.which) {             /* real browsers */
+               keynum = e.which;
+       }
+       if (keynum == 13) {             /* enter/return key */
+               ajax_try_openid();
+               return false;
+       }
+       return true;
+}
+
+
+/****************** GOOGLE ***********************/
+
+/*
+ * Attempt login with Google, called from modal dialog
+ */
+function ajax_try_google() {
+       $('login_errmsg').innerHTML = "";
+       openid_url = encodeURI("https://www.google.com/accounts/o8/id");
+       do_auth_popout("openid_login?openid_url=" + openid_url);
+}
+
+
+/****************** GOOGLE ***********************/
+
+/*
+ * Attempt login with Yahoo, called from modal dialog
+ */
+function ajax_try_yahoo() {
+       $('login_errmsg').innerHTML = "";
+       openid_url = encodeURI("http://yahoo.com");
+       do_auth_popout("openid_login?openid_url=" + openid_url);
+}
+
+
+/****************** AOL ***********************/
+
+/*
+ * Attempt login with AOL, called from modal dialog
+ */
+function ajax_try_aol() {
+       $('login_errmsg').innerHTML = "";
+       openid_url = encodeURI($('ajax_aol_form').elements["aol_screenname"].value);
+       do_auth_popout("openid_login?openid_url=http://openid.aol.com/" + openid_url);
 }
+
+
+/*
+ * The user pressed a key while in the AOL login box.
+ * Is it the enter/return key?  Submit the form.
+ */
+function aol_onkeypress(e) {
+       if (window.event) {             /* IE */
+               keynum = e.keyCode;
+       }
+       else if (e.which) {             /* real browsers */
+               keynum = e.which;
+       }
+       if (keynum == 13) {             /* enter/return key */
+               ajax_try_aol();
+               return false;
+       }
+       return true;
+}
+
+