From ab78cbd720442005cb574560a4efec755dc5dc87 Mon Sep 17 00:00:00 2001
From: meskio <meskio@sindominio.net>
Date: Wed, 23 Dec 2020 17:21:47 +0100
Subject: [PATCH] Add invite mail feature into /api/member PUT

Remove batch member add, as it will not be needed anymore.
---
 api/api.go       |  1 -
 api/db/member.go |  3 +++
 api/member.go    | 47 +++++++++--------------------------------------
 3 files changed, 12 insertions(+), 39 deletions(-)

diff --git a/api/api.go b/api/api.go
index a392615..bfab481 100644
--- a/api/api.go
+++ b/api/api.go
@@ -34,7 +34,6 @@ func Init(dbPath string, signKey string, mail *Mail, r *mux.Router) error {
 
 	r.HandleFunc("/member", a.authAdmin(a.ListMembers)).Methods("GET")
 	r.HandleFunc("/member", a.authAdmin(a.AddMember)).Methods("POST")
-	r.HandleFunc("/member/batch", a.authAdmin(a.AddBatchMember)).Methods("POST")
 	r.HandleFunc("/member/me", a.authNum(a.getMemberNum)).Methods("GET")
 	r.HandleFunc("/member/me", a.authNum(a.UpdateMemberMe)).Methods("PUT")
 	r.HandleFunc("/member/{num:[0-9]+}", a.authAdmin(a.GetMember)).Methods("GET")
diff --git a/api/db/member.go b/api/db/member.go
index 81ae300..7d11ae8 100644
--- a/api/db/member.go
+++ b/api/db/member.go
@@ -105,6 +105,9 @@ func (d DB) UpdateMember(num int, member MemberReq, checkPass bool) (Member, err
 	if member.Email != "" {
 		dbMember.Email = member.Email
 	}
+	if member.Phone != "" {
+		dbMember.Phone = member.Phone
+	}
 	if member.Role != "" {
 		dbMember.Role = member.Role
 	}
diff --git a/api/member.go b/api/member.go
index eaf227e..ef81866 100644
--- a/api/member.go
+++ b/api/member.go
@@ -26,53 +26,24 @@ func (a *api) AddMember(w http.ResponseWriter, req *http.Request) {
 		return
 	}
 
-	w.Header().Set("Content-Type", "application/json")
-	w.WriteHeader(http.StatusCreated)
-	err = json.NewEncoder(w).Encode(member)
-	if err != nil {
-		log.Printf("Can't encode added member: %v", err)
-		w.WriteHeader(http.StatusInternalServerError)
-		return
-	}
-}
-
-func (a *api) AddBatchMember(w http.ResponseWriter, req *http.Request) {
-	var memberReq []db.MemberReq
-	err := json.NewDecoder(req.Body).Decode(&memberReq)
-	if err != nil {
-		log.Printf("Can't create member: %v", err)
-		w.WriteHeader(http.StatusInternalServerError)
-		return
-	}
-
-	members := make([]db.Member, len(memberReq))
-	for i, m := range memberReq {
-		members[i], err = a.db.AddMember(&m)
+	if memberReq.Password == "" {
+		_, token, err := a.db.NewPasswordReset(memberReq.Email)
 		if err != nil {
-			log.Printf("Can't create member: %v\n%v", err, m)
+			log.Printf("Can't create the password reset for %s: %v", memberReq.Email, err)
 			w.WriteHeader(http.StatusInternalServerError)
 			return
 		}
-
-		if m.Password == "" {
-			_, token, err := a.db.NewPasswordReset(m.Email)
-			if err != nil {
-				log.Printf("Can't create the password reset for %s: %v", m.Email, err)
-				w.WriteHeader(http.StatusInternalServerError)
-				return
-			}
-			err = a.mail.sendNewMember(members[i], "/nreset/"+token)
-			if err != nil {
-				log.Printf("Can't send the pass/login reset email to %s: %v", m.Email, err)
-				w.WriteHeader(http.StatusInternalServerError)
-				return
-			}
+		err = a.mail.sendNewMember(memberReq.Member, "/nreset/"+token)
+		if err != nil {
+			log.Printf("Can't send the pass/login reset email to %s: %v", memberReq.Email, err)
+			w.WriteHeader(http.StatusInternalServerError)
+			return
 		}
 	}
 
 	w.Header().Set("Content-Type", "application/json")
 	w.WriteHeader(http.StatusCreated)
-	err = json.NewEncoder(w).Encode(members)
+	err = json.NewEncoder(w).Encode(member)
 	if err != nil {
 		log.Printf("Can't encode added member: %v", err)
 		w.WriteHeader(http.StatusInternalServerError)
-- 
GitLab