|
@@ -15,6 +15,7 @@ import (
|
|
|
"io/ioutil"
|
|
|
"log"
|
|
|
"net/http"
|
|
|
+ "net/mail"
|
|
|
"os"
|
|
|
"strings"
|
|
|
|
|
@@ -174,6 +175,7 @@ func (h *RegisterHandler) CleanRegisters() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+//List all User Emails, return [username(string), email(string), stillResitered(bool)]
|
|
|
func (h *RegisterHandler) ListAllUserEmails() [][]interface{} {
|
|
|
results := [][]interface{}{}
|
|
|
entries, _ := h.database.ListTable("register")
|
|
@@ -208,6 +210,12 @@ func (h *RegisterHandler) HandleRegisterRequest(w http.ResponseWriter, r *http.R
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ //Validate the email is a email
|
|
|
+ if !isValidEmail(email) {
|
|
|
+ sendErrorResponse(w, "Invalid or malformed email")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
username, err := mv(r, "username", true)
|
|
|
if username == "" || strings.TrimSpace(username) == "" || err != nil {
|
|
|
sendErrorResponse(w, "Invalid Username")
|
|
@@ -261,3 +269,34 @@ func (h *RegisterHandler) HandleRegisterRequest(w http.ResponseWriter, r *http.R
|
|
|
log.Println("New User Registered: ", email, username, strings.Repeat("*", len(password)))
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+//Change Email for the registered user
|
|
|
+func (h *RegisterHandler) HandleEmailChange(w http.ResponseWriter, r *http.Request) {
|
|
|
+ //Get input paramter
|
|
|
+ email, err := mv(r, "email", true)
|
|
|
+ if err != nil {
|
|
|
+ sendErrorResponse(w, "Invalid Email")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //Validate the email is a email
|
|
|
+ if !isValidEmail(email) {
|
|
|
+ sendErrorResponse(w, "Invalid or malformed email")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //Get username from request
|
|
|
+ username, err := h.authAgent.GetUserName(w, r)
|
|
|
+ if err != nil {
|
|
|
+ sendErrorResponse(w, "Unable to get username from request")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //Write email to database as well
|
|
|
+ h.database.Write("register", "user/email/"+username, email)
|
|
|
+}
|
|
|
+
|
|
|
+func isValidEmail(email string) bool {
|
|
|
+ _, err := mail.ParseAddress(email)
|
|
|
+ return err == nil
|
|
|
+}
|