3801fdecfb0ae2dd00cbe94556e2e81c9859a68e chinhli Thu May 3 14:43:26 2012 -0700 Finished init part of send new password diff --git src/hg/hgLogin/hgLogin.c src/hg/hgLogin/hgLogin.c index 48d7e8c..8e56916 100644 --- src/hg/hgLogin/hgLogin.c +++ src/hg/hgLogin/hgLogin.c @@ -96,57 +96,50 @@ } void mailUsername(char *email, char *users) /* send user name list to the email address */ { char subject[256]; char msg[256]; char signature[256]="\nUCSC Genome Browser \nhttp://www.genome.ucsc.edu "; safef(subject, sizeof(subject),"Greeting form UCSC Genome Browser"); safef(msg, sizeof(msg), "User name(s) associated with this email address at UCSC Genome Browser: \n\n %s \n", users); safecat (msg, sizeof(msg), signature); sendMail(email, subject, msg); } -void sendUsername(struct sqlConnection *conn) +void sendUsername(struct sqlConnection *conn, char *email) /* email user username(s) */ { struct sqlResult *sr; char **row; char query[256]; -char *email = cartUsualString(cart, "hgLogin_email", ""); +// char *email = cartUsualString(cart, "hgLogin_email", ""); /* TODO: validate the email address is in right format */ /* find all the user names assocaited with this email address */ -// char userList[256]=""; char user[256]; safef(query,sizeof(query),"select * from gbMembers where email='%s'", email); sr = sqlGetResult(conn, query); -// int numUser = 0; while ((row = sqlNextRow(sr)) != NULL) { struct gbMembers *m = gbMembersLoad(row); - // if (numUser >= 1) - // safecat(userList, sizeof(userList), ", "); - // safecat(userList, sizeof(userList), m->userName); - // numUser += 1; safef(user, sizeof(user), m->userName); mailUsername(email, user); } sqlFreeResult(&sr); -// mailUsername(email, userList); } /*************** to-do below *********************/ void activateAccount(struct sqlConnection *conn) /* activate account */ { // struct sqlResult *sr; // char **row; char query[256]; char *token = cgiUsualString("hgLogin_activateAccount", ""); safef(query,sizeof(query),"Token is %s ", token); if (!sameString(token,"")) { freez(&errMsg); @@ -378,81 +371,89 @@ sr = sqlGetResult(conn, "select * from members"); while ((row = sqlNextRow(sr)) != NULL) { hPrintf("<tr><td>%s</td><td>%s</td></tr>",row[0],row[1]); } sqlFreeResult(&sr); hPrintf("</table>"); } void lostPassword(struct sqlConnection *conn) /* process the lost password form */ { char query[256]; char cmd[256]; -char *email = cartUsualString(cart, "hgLogin_email", ""); -if (!email || sameString(email,"")) +char *username = cartUsualString(cart, "hgLogin_userName", ""); +if (!username || sameString(username,"")) { freez(&errMsg); - errMsg = cloneString("Email cannot be blank."); + errMsg = cloneString("Username cannot be blank."); // lostPasswordPage(conn); return; } -safef(query,sizeof(query), "select password from gbMembers where email='%s'", email); +/**** scalfolding code before reset pwd is finished ***/ + else { + freez(&errMsg); + errMsg = cloneString("Generating new password....."); + // lostPasswordPage(conn); + return; + } + +safef(query,sizeof(query), "select password from gbMembers where userName='%s'", username); char *password = sqlQuickString(conn, query); if (!password) { freez(&errMsg); - errMsg = cloneString("Email not found."); + errMsg = cloneString("Username not found."); // lostPasswordPage(conn); return; } freez(&password); password = generateRandomPassword(); char encPwd[45] = ""; encryptNewPwd(password, encPwd, sizeof(encPwd)); -safef(query,sizeof(query), "update gbMembers set password='%s' where email='%s'", sqlEscapeString(encPwd), sqlEscapeString(email)); +safef(query,sizeof(query), "update gbMembers set password='%s' where userName='%s'", sqlEscapeString(encPwd), sqlEscapeString(username)); sqlUpdate(conn, query); updatePasswordsFile(conn); safef(cmd,sizeof(cmd), "echo 'Your new password is: %s' | mail -s \"Lost GSID HIV password\" %s" -, password, email); +, password, username); int result = system(cmd); if (result == -1) { hPrintf( "<h2>UCSC Genome Browser</h2>" "<p align=\"left\">" "</p>" "<h3>Error emailing password to: %s</h3>" "Click <a href=hgLogin?hgLogin.do.signupPage=1>here</a> to return.<br>" - , email + , username ); } else { hPrintf( "<h2>UCSC Genome Browser</h2>" "<p align=\"left\">" "</p>" "<h3>Password has been emailed to: %s</h3>" "Click <a href=hgLogin?hgLogin.do.signupPage=1>here</a> to return.<br>" - , email + , username ); } freez(&password); } void changePasswordPage(struct sqlConnection *conn) /* change password page */ { hPrintf( "<div id=\"changePwBox\" class=\"centeredContainer formBox\">" "\n" "<h2>UCSC Genome Browser</h2>" "\n" "<h3>Change Password</h3>" @@ -826,54 +827,67 @@ "</form>" "</div><!-- END - accountHelpBox -->" , username , email ); cartSaveSession(cart); } void accountHelp(struct sqlConnection *conn) /* email user username(s) or new password */ { // struct sqlResult *sr; // char **row; // char query[256]; char *email = cartUsualString(cart, "hgLogin_email", ""); +char *username = cartUsualString(cart, "hgLogin_userName", ""); char *helpWith = cartUsualString(cart, "hgLogin_helpWith", ""); +/* Forgot username */ +if (sameString(helpWith,"username")) +{ if (sameString(email,"")) { freez(&errMsg); errMsg = cloneString("Email address cannot be blank."); displayAccHelpPage(conn); return; + } else { + sendUsername(conn, email); + return; } -/* TODO: validate the email address is in right format */ -/* Username selcted? */ -if (sameString(helpWith,"username")) - { - sendUsername(conn); } - +/* Forgot password */ if (sameString(helpWith,"password")) { + if (sameString(username,"")) + { freez(&errMsg); - errMsg = cloneString("Forgot password selected!"); + errMsg = cloneString("Username cannot be blank."); displayAccHelpPage(conn); return; + } else { +/**** temp code before mail password function is done ****/ +/**** sendNewPassword(conn, username) *******************/ + freez(&errMsg); + errMsg = cloneString("Will send a new password to you soon ..."); + displayAccHelpPage(conn); + return; + } } cartRemove(cart, "hgLogin_helpWith"); + cartRemove(cart, "hgLogin_email"); // cartRemove(cart, "hgLogin_userName"); displayAccHelpPage(conn); return; } /* ----- account login/display functions ---- */ void displayLoginPage(struct sqlConnection *conn) /* draw the account login page */ { char *username = cartUsualString(cart, "hgLogin_userName", ""); /* for password security, use cgi hash instead of cart */ // char *password = cgiUsualString("hgLogin_password", "");