X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fstatic%2Fauthmethods.js;fp=webcit%2Fstatic%2Fauthmethods.js;h=fa17b7351f0764e26c567d1e19d0d749f94c423b;hb=8611acef7ff4213c28ad20ff755d34509870bc96;hp=0000000000000000000000000000000000000000;hpb=76a0f8571de023fe6bd20390174a2302e0a0b982;p=citadel.git diff --git a/webcit/static/authmethods.js b/webcit/static/authmethods.js new file mode 100644 index 000000000..fa17b7351 --- /dev/null +++ b/webcit/static/authmethods.js @@ -0,0 +1,237 @@ +/* + * Copyright 2010-2017, the Citadel Team + * Licensed under the GPL V3 + * + * JavaScript functions which handle various authentication methods. + */ + + + +/****************** COMMON CODE ***********************/ + + +/* + * Are we logged in right now? + */ +function IsLoggedIn() { + if ($('is_logged_in').innerHTML == "yes") { + return 1; + } + else { + return 0; + } +} + + +/* + * Wrapper script to require logging in before completing an action + */ +function GetLoggedInFirst(destination_url) { + + /* If logged in already, go directly to the destination. */ + if (IsLoggedIn()) { + window.location = decodeURIComponent(destination_url); + return; + } + + p = 'push?url=' + destination_url; + new Ajax.Request(p, { method: 'get' } ); + + /* If not logged in, go modal and ask the user to log in first. */ + toggleModal(1); +} + + +/* + * 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') { + window.location = 'pop'; + } + 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. + */ +function username_and_password_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_username_and_password(); + } +} + + +/****************** REGISTER NEW USER ***********************/ + +/* + * Attempt to create a new local username/password, called from modal dialog + */ +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); +} + + +/****************** YAHOO ***********************/ + +/* + * 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; +} + +