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", "");