From 5c83237e180fd585e9a4f422a8f682ff042664d5 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Fri, 28 Jan 2011 12:50:55 -0500 Subject: [PATCH] Initial version of 'register new user' dialog --- webcit/auth.c | 108 +++++------------------------ webcit/static/authmethods.js | 72 ++++++++++++++++--- webcit/static/styles/webcit.css | 4 +- webcit/static/t/get_logged_in.html | 15 +++- 4 files changed, 97 insertions(+), 102 deletions(-) diff --git a/webcit/auth.c b/webcit/auth.c index bbb54f32e..6af54b88d 100644 --- a/webcit/auth.c +++ b/webcit/auth.c @@ -140,107 +140,39 @@ void become_logged_in(const StrBuf *user, const StrBuf *pass, StrBuf *serv_respo } -#ifdef __OLD__LOGIN__SCREEN__ /* - * Perform authentication using a user name and password + * modal/ajax version of 'login' (username and password) */ -void do_login(void) -{ - wcsession *WCC = WC; - StrBuf *Buf; - long ret, rc; - - if (havebstr("language")) { - set_selected_language(bstr("language")); - go_selected_language(); - } +void ajax_login_username_password(void) { + StrBuf *Buf = NewStrBuf(); - if (havebstr("exit_action")) { - do_logout(); - return; - } - Buf = NewStrBuf(); - if (havebstr("login_action")) { - serv_printf("USER %s", bstr("name")); - StrBuf_ServGetln(Buf); - rc = GetServerStatus(Buf, &ret); - StrBufCutLeft(Buf, 4); - switch (rc) { - case 3: - serv_printf("PASS %s", bstr("pass")); - StrBuf_ServGetln(Buf); - if (GetServerStatus(Buf, NULL) == 2) { - become_logged_in(sbstr("name"), sbstr("pass"), Buf); - } else { - StrBufCutLeft(Buf, 4); - AppendImportantMessage(SKEY(Buf)); - display_login(); - FreeStrBuf(&Buf); - return; - } - break; - case 5: - if (ret == 541) - { - AppendImportantMessage(SKEY(Buf)); - display_main_menu(); - return; - } - default: - AppendImportantMessage(SKEY(Buf)); - display_login(); - FreeStrBuf(&Buf); - return; - } - } - if (havebstr("newuser_action")) { - if (!havebstr("pass")) { - AppendImportantMessage(_("Blank passwords are not allowed."), -1); - display_login(); - FreeStrBuf(&Buf); - return; - } - serv_printf("NEWU %s", bstr("name")); + serv_printf("USER %s", bstr("name")); + StrBuf_ServGetln(Buf); + if (GetServerStatus(Buf, NULL) == 3) { + serv_printf("PASS %s", bstr("pass")); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 2) { become_logged_in(sbstr("name"), sbstr("pass"), Buf); - serv_printf("SETP %s", bstr("pass")); - StrBuf_ServGetln(Buf); /* Don't care? */ - } else { - StrBufCutLeft(Buf, 4); - AppendImportantMessage(SKEY(Buf)); - display_login(); - FreeStrBuf(&Buf); - return; } } - if (WCC->logged_in) { - if (WCC->need_regi) { - display_reg(1); - } else if (WCC->need_vali) { - validate(); - } else { - do_welcome(); - } - } else { - AppendImportantMessage(_("Your password was not accepted."), -1); - display_login(); - } + + /* The client is expecting to read back a citadel protocol response */ + wc_printf("%s", ChrPtr(Buf)); FreeStrBuf(&Buf); } -#endif + /* - * modal/ajax version of 'login' (username and password) + * modal/ajax version of 'new user' (username and password) */ -void ajax_login_username_password(void) { +void ajax_login_newuser(void) { StrBuf *Buf = NewStrBuf(); - serv_printf("USER %s", bstr("name")); + serv_printf("NEWU %s", bstr("name")); StrBuf_ServGetln(Buf); - if (GetServerStatus(Buf, NULL) == 3) { - serv_printf("PASS %s", bstr("pass")); + if (GetServerStatus(Buf, NULL) == 2) { + serv_printf("SETP %s", bstr("pass")); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 2) { become_logged_in(sbstr("name"), sbstr("pass"), Buf); @@ -1067,9 +999,6 @@ InitModule_AUTH /* some of these will be removed soon */ WebcitAddUrlHandler(HKEY("do_welcome"), "", 0, do_welcome, ANONYMOUS|COOKIEUNNEEDED); -#ifdef __OLD__LOGIN__SCREEN__ - WebcitAddUrlHandler(HKEY("login"), "", 0, do_login, ANONYMOUS|COOKIEUNNEEDED); -#endif WebcitAddUrlHandler(HKEY("openid_login"), "", 0, do_openid_login, ANONYMOUS); WebcitAddUrlHandler(HKEY("finalize_openid_login"), "", 0, finalize_openid_login, ANONYMOUS); WebcitAddUrlHandler(HKEY("openid_manual_create"), "", 0, openid_manual_create, ANONYMOUS); @@ -1080,9 +1009,8 @@ InitModule_AUTH WebcitAddUrlHandler(HKEY("changepw"), "", 0, changepw, 0); WebcitAddUrlHandler(HKEY("termquit"), "", 0, do_logout, 0); WebcitAddUrlHandler(HKEY("do_logout"), "", 0, do_logout, ANONYMOUS|COOKIEUNNEEDED|FORCE_SESSIONCLOSE); - WebcitAddUrlHandler(HKEY("ajax_login_username_password"), "", 0, - ajax_login_username_password, AJAX|ANONYMOUS); - + WebcitAddUrlHandler(HKEY("ajax_login_username_password"), "", 0, ajax_login_username_password, AJAX|ANONYMOUS); + WebcitAddUrlHandler(HKEY("ajax_login_newuser"), "", 0, ajax_login_newuser, AJAX|ANONYMOUS); RegisterConditional(HKEY("COND:AIDE"), 2, ConditionalAide, CTX_NONE); RegisterConditional(HKEY("COND:LOGGEDIN"), 2, ConditionalIsLoggedIn, CTX_NONE); RegisterConditional(HKEY("COND:MAY_CREATE_ROOM"), 2, ConditionalHaveAccessCreateRoom, CTX_NONE); diff --git a/webcit/static/authmethods.js b/webcit/static/authmethods.js index c8452c54a..fca4cf266 100644 --- a/webcit/static/authmethods.js +++ b/webcit/static/authmethods.js @@ -6,6 +6,10 @@ */ + +/****************** COMMON CODE ***********************/ + + /* * Are we logged in right now? */ @@ -47,6 +51,30 @@ 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'; + $(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 */ @@ -83,25 +111,48 @@ 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') { + window.location = 'pop'; + } + else { + $('login_errmsg').innerHTML = ctdlresult.responseText.substr(4) ; + } + } + }); } /* - * Pop out a window for external auth methods - * (most of them don't handle inline auth very well) + * The user pressed a key while in the newuser or newpassword box. + * Is it the enter/return key? Submit the form. */ -function do_auth_popout(popout_url) { - window.open(popout_url, "authpopout", "status=1,toolbar=0,width=600,height=400"); +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 */ @@ -110,3 +161,6 @@ function ajax_try_openid() { openid_url = encodeURI($('ajax_openid_form').elements["openid_url"].value); do_auth_popout("openid_login?openid_url=" + openid_url); } + + + diff --git a/webcit/static/styles/webcit.css b/webcit/static/styles/webcit.css index a98e94b1c..8440aeeee 100644 --- a/webcit/static/styles/webcit.css +++ b/webcit/static/styles/webcit.css @@ -1352,12 +1352,12 @@ a.event_title:hover span.bttbottom, a.event_unread:hover span.bttbottom, a.event background-color: #ddd; } -#ajax_username_password_form { +#ajax_username_password_form, #ajax_newuser_form { margin: auto; width: 20em; } -#ajax_username_password_form label { +#ajax_username_password_form label, #ajax_newuser_form label { float: left; width: 10em; } diff --git a/webcit/static/t/get_logged_in.html b/webcit/static/t/get_logged_in.html index 9a7ae0f21..88bbb4243 100644 --- a/webcit/static/t/get_logged_in.html +++ b/webcit/static/t/get_logged_in.html @@ -50,7 +50,20 @@

-
+
+ + +