From ec1cf3fcda67842cb71e55b5b32038cc8ab5fdee Mon Sep 17 00:00:00 2001
From: lanrenwo <lanrenwo@users.noreply.github.com>
Date: Sun, 16 Oct 2022 12:49:19 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=82=AE=E4=BB=B6=E9=85=8D?=
 =?UTF-8?q?=E7=BD=AE=E9=A1=B5=E9=9D=A2-=E5=AF=86=E7=A0=81=E4=B8=BA?=
 =?UTF-8?q?=E7=A9=BA=E6=97=B6=E5=88=99=E4=B8=8D=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 server/admin/api_other.go   | 15 ++++++++++++++-
 web/src/pages/set/Other.vue |  2 +-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/server/admin/api_other.go b/server/admin/api_other.go
index 234a220..557b27a 100644
--- a/server/admin/api_other.go
+++ b/server/admin/api_other.go
@@ -16,6 +16,11 @@ func setOtherGet(data interface{}, w http.ResponseWriter) {
 		RespError(w, RespInternalErr, err)
 		return
 	}
+	// 不明文输出SMTP的密码
+	switch dbdata.StructName(data) {
+	case "SettingSmtp":
+		data.(*dbdata.SettingSmtp).Password = ""
+	}
 	RespSucess(w, data)
 }
 
@@ -34,7 +39,15 @@ func setOtherEdit(data interface{}, w http.ResponseWriter, r *http.Request) {
 	}
 
 	// fmt.Println(data)
-
+	switch dbdata.StructName(data) {
+	case "SettingSmtp":
+		// 密码为空时则不修改
+		smtp := &dbdata.SettingSmtp{}
+		err := dbdata.SettingGet(smtp)
+		if err == nil && data.(*dbdata.SettingSmtp).Password == "" {
+			data.(*dbdata.SettingSmtp).Password = smtp.Password
+		}
+	}
 	err = dbdata.SettingSet(data)
 	if err != nil {
 		RespError(w, RespInternalErr, err)
diff --git a/web/src/pages/set/Other.vue b/web/src/pages/set/Other.vue
index d1ca281..43f96fa 100644
--- a/web/src/pages/set/Other.vue
+++ b/web/src/pages/set/Other.vue
@@ -13,7 +13,7 @@
             <el-input v-model="dataSmtp.username"></el-input>
           </el-form-item>
           <el-form-item label="密码" prop="password">
-            <el-input v-model="dataSmtp.password"></el-input>
+            <el-input type="password" v-model="dataSmtp.password" placeholder="密码为空则不修改"></el-input>
           </el-form-item>
           <el-form-item label="加密类型" prop="encryption">
             <el-radio-group v-model="dataSmtp.encryption">