From bf6d5e529b599478276fc16aecbed672ab1bb870 Mon Sep 17 00:00:00 2001 From: Yang Luo Date: Thu, 4 May 2023 23:41:37 +0800 Subject: [PATCH] Add "from" to Email provider --- object/email.go | 17 ++++++++++---- object/provider.go | 7 ++++-- web/src/ProviderEditPage.js | 44 +++++++++++++++++++++++++++--------- web/src/locales/de/data.json | 5 ++++ web/src/locales/en/data.json | 5 ++++ web/src/locales/es/data.json | 5 ++++ web/src/locales/fr/data.json | 5 ++++ web/src/locales/id/data.json | 5 ++++ web/src/locales/ja/data.json | 5 ++++ web/src/locales/ko/data.json | 5 ++++ web/src/locales/ru/data.json | 5 ++++ web/src/locales/vi/data.json | 5 ++++ web/src/locales/zh/data.json | 5 ++++ 13 files changed, 101 insertions(+), 17 deletions(-) diff --git a/object/email.go b/object/email.go index 0ee2fd3b..55bbb0ff 100644 --- a/object/email.go +++ b/object/email.go @@ -24,11 +24,9 @@ import ( func getDialer(provider *Provider) *gomail.Dialer { dialer := &gomail.Dialer{} + dialer = gomail.NewDialer(provider.Host, provider.Port, provider.ClientId, provider.ClientSecret) if provider.Type == "SUBMAIL" { - dialer = gomail.NewDialer(provider.Host, provider.Port, provider.AppId, provider.ClientSecret) dialer.TLSConfig = &tls.Config{InsecureSkipVerify: true} - } else { - dialer = gomail.NewDialer(provider.Host, provider.Port, provider.ClientId, provider.ClientSecret) } dialer.SSL = !provider.DisableSsl @@ -40,7 +38,18 @@ func SendEmail(provider *Provider, title string, content string, dest string, se dialer := getDialer(provider) message := gomail.NewMessage() - message.SetAddressHeader("From", provider.ClientId, sender) + + fromAddress := provider.ClientId2 + if fromAddress == "" { + fromAddress = provider.ClientId + } + + fromName := provider.ClientSecret2 + if fromName == "" { + fromName = sender + } + + message.SetAddressHeader("From", fromAddress, fromName) message.SetHeader("To", dest) message.SetHeader("Subject", title) message.SetBody("text/html", content) diff --git a/object/provider.go b/object/provider.go index 5dbaad02..1951ca0f 100644 --- a/object/provider.go +++ b/object/provider.go @@ -78,8 +78,11 @@ func GetMaskedProvider(provider *Provider) *Provider { if provider.ClientSecret != "" { provider.ClientSecret = "***" } - if provider.ClientSecret2 != "" { - provider.ClientSecret2 = "***" + + if provider.Category != "Email" { + if provider.ClientSecret2 != "" { + provider.ClientSecret2 = "***" + } } return provider diff --git a/web/src/ProviderEditPage.js b/web/src/ProviderEditPage.js index 5cb85a9e..e6beee82 100644 --- a/web/src/ProviderEditPage.js +++ b/web/src/ProviderEditPage.js @@ -132,6 +132,34 @@ class ProviderEditPage extends React.Component { } } + getClientId2Label(provider) { + switch (provider.category) { + case "Email": + return Setting.getLabel(i18next.t("provider:From address"), i18next.t("provider:From address - Tooltip")); + default: + if (provider.type === "Aliyun Captcha") { + return Setting.getLabel(i18next.t("provider:Scene"), i18next.t("provider:Scene - Tooltip")); + } else if (provider.type === "WeChat Pay") { + return Setting.getLabel(i18next.t("provider:App ID"), i18next.t("provider:App ID - Tooltip")); + } else { + return Setting.getLabel(i18next.t("provider:Client ID 2"), i18next.t("provider:Client ID 2 - Tooltip")); + } + } + } + + getClientSecret2Label(provider) { + switch (provider.category) { + case "Email": + return Setting.getLabel(i18next.t("provider:From name"), i18next.t("provider:From name - Tooltip")); + default: + if (provider.type === "Aliyun Captcha") { + return Setting.getLabel(i18next.t("provider:App key"), i18next.t("provider:App key - Tooltip")); + } else { + return Setting.getLabel(i18next.t("provider:Client secret 2"), i18next.t("provider:Client secret 2 - Tooltip")); + } + } + } + getProviderSubTypeOptions(type) { if (type === "WeCom" || type === "Infoflow") { return ( @@ -446,7 +474,7 @@ class ProviderEditPage extends React.Component { this.state.provider.category === "AI" ? null : ( - {this.getClientIdLabel(this.state.provider)} + {this.getClientIdLabel(this.state.provider)} : { @@ -458,7 +486,7 @@ class ProviderEditPage extends React.Component { } - {this.getClientSecretLabel(this.state.provider)} + {this.getClientSecretLabel(this.state.provider)} : { @@ -470,15 +498,11 @@ class ProviderEditPage extends React.Component { ) } { - this.state.provider.type !== "WeChat" && this.state.provider.type !== "Aliyun Captcha" && this.state.provider.type !== "WeChat Pay" ? null : ( + this.state.provider.category !== "Email" && this.state.provider.type !== "WeChat" && this.state.provider.type !== "Aliyun Captcha" && this.state.provider.type !== "WeChat Pay" ? null : ( - {this.state.provider.type === "Aliyun Captcha" - ? Setting.getLabel(i18next.t("provider:Scene"), i18next.t("provider:Scene - Tooltip")) - : this.state.provider.type === "WeChat Pay" - ? Setting.getLabel("appId", "appId") - : Setting.getLabel(i18next.t("provider:Client ID 2"), i18next.t("provider:Client ID 2 - Tooltip"))} + {this.getClientId2Label(this.state.provider)} : { @@ -490,9 +514,7 @@ class ProviderEditPage extends React.Component { this.state.provider.type === "WeChat Pay" ? null : ( - {this.state.provider.type === "Aliyun Captcha" - ? Setting.getLabel(i18next.t("provider:App key"), i18next.t("provider:App key - Tooltip")) - : Setting.getLabel(i18next.t("provider:Client secret 2"), i18next.t("provider:Client secret 2 - Tooltip"))} + {this.getClientSecret2Label(this.state.provider)} : { diff --git a/web/src/locales/de/data.json b/web/src/locales/de/data.json index 5123ac9e..10ad907a 100644 --- a/web/src/locales/de/data.json +++ b/web/src/locales/de/data.json @@ -196,6 +196,7 @@ "Failed to add": "Fehler beim hinzufügen", "Failed to connect to server": "Die Verbindung zum Server konnte nicht hergestellt werden", "Failed to delete": "Konnte nicht gelöscht werden", + "Failed to get answer": "Failed to get answer", "Failed to save": "Konnte nicht gespeichert werden", "Favicon": "Favicon", "Favicon - Tooltip": "Favicon-URL, die auf allen Casdoor-Seiten der Organisation verwendet wird", @@ -544,6 +545,10 @@ "Enable QR code - Tooltip": "Ob das Scannen von QR-Codes zum Einloggen aktiviert werden soll", "Endpoint": "Endpoint", "Endpoint (Intranet)": "Endpoint (Intranet)", + "From address": "From address", + "From address - Tooltip": "From address - Tooltip", + "From name": "From name", + "From name - Tooltip": "From name - Tooltip", "Host": "Host", "Host - Tooltip": "Name des Hosts", "IdP": "IdP", diff --git a/web/src/locales/en/data.json b/web/src/locales/en/data.json index 8261e7c8..b6f3fa61 100644 --- a/web/src/locales/en/data.json +++ b/web/src/locales/en/data.json @@ -196,6 +196,7 @@ "Failed to add": "Failed to add", "Failed to connect to server": "Failed to connect to server", "Failed to delete": "Failed to delete", + "Failed to get answer": "Failed to get answer", "Failed to save": "Failed to save", "Favicon": "Favicon", "Favicon - Tooltip": "Favicon icon URL used in all Casdoor pages of the organization", @@ -544,6 +545,10 @@ "Enable QR code - Tooltip": "Whether to allow scanning QR code to login", "Endpoint": "Endpoint", "Endpoint (Intranet)": "Endpoint (Intranet)", + "From address": "From address", + "From address - Tooltip": "Email address of \"From\"", + "From name": "From name", + "From name - Tooltip": "Name of \"From\"", "Host": "Host", "Host - Tooltip": "Name of host", "IdP": "IdP", diff --git a/web/src/locales/es/data.json b/web/src/locales/es/data.json index 27db7c39..b6d579ed 100644 --- a/web/src/locales/es/data.json +++ b/web/src/locales/es/data.json @@ -196,6 +196,7 @@ "Failed to add": "No se pudo agregar", "Failed to connect to server": "No se pudo conectar al servidor", "Failed to delete": "No se pudo eliminar", + "Failed to get answer": "Failed to get answer", "Failed to save": "No se pudo guardar", "Favicon": "Favicon", "Favicon - Tooltip": "URL del icono Favicon utilizado en todas las páginas de Casdoor de la organización", @@ -544,6 +545,10 @@ "Enable QR code - Tooltip": "Si permitir el escaneo de códigos QR para acceder", "Endpoint": "Punto final", "Endpoint (Intranet)": "Punto final (intranet)", + "From address": "From address", + "From address - Tooltip": "From address - Tooltip", + "From name": "From name", + "From name - Tooltip": "From name - Tooltip", "Host": "Anfitrión", "Host - Tooltip": "Nombre del anfitrión", "IdP": "IdP = Proveedor de Identidad", diff --git a/web/src/locales/fr/data.json b/web/src/locales/fr/data.json index 538a6cca..62c88e73 100644 --- a/web/src/locales/fr/data.json +++ b/web/src/locales/fr/data.json @@ -196,6 +196,7 @@ "Failed to add": "Échec d'ajout", "Failed to connect to server": "Échec de la connexion au serveur", "Failed to delete": "Échec de la suppression", + "Failed to get answer": "Failed to get answer", "Failed to save": "Échec de sauvegarde", "Favicon": "Favicon", "Favicon - Tooltip": "L'URL de l'icône Favicon utilisée dans toutes les pages Casdoor de l'organisation", @@ -544,6 +545,10 @@ "Enable QR code - Tooltip": "Doit-on autoriser la numérisation de QR code pour se connecter ?", "Endpoint": "Point final", "Endpoint (Intranet)": "Point final (intranet)", + "From address": "From address", + "From address - Tooltip": "From address - Tooltip", + "From name": "From name", + "From name - Tooltip": "From name - Tooltip", "Host": "Hôte", "Host - Tooltip": "Nom d'hôte", "IdP": "IdP", diff --git a/web/src/locales/id/data.json b/web/src/locales/id/data.json index 6920b9c5..2c3d05b6 100644 --- a/web/src/locales/id/data.json +++ b/web/src/locales/id/data.json @@ -196,6 +196,7 @@ "Failed to add": "Gagal menambahkan", "Failed to connect to server": "Gagal terhubung ke server", "Failed to delete": "Gagal menghapus", + "Failed to get answer": "Failed to get answer", "Failed to save": "Gagal menyimpan", "Favicon": "Favicon", "Favicon - Tooltip": "URL ikon Favicon yang digunakan di semua halaman Casdoor organisasi", @@ -544,6 +545,10 @@ "Enable QR code - Tooltip": "Apakah diizinkan untuk memindai kode QR untuk masuk?", "Endpoint": "Titik akhir", "Endpoint (Intranet)": "Titik Akhir (Intranet)", + "From address": "From address", + "From address - Tooltip": "From address - Tooltip", + "From name": "From name", + "From name - Tooltip": "From name - Tooltip", "Host": "Tuan rumah", "Host - Tooltip": "Nama tuan rumah", "IdP": "IdP", diff --git a/web/src/locales/ja/data.json b/web/src/locales/ja/data.json index 5efb0a67..55f52a54 100644 --- a/web/src/locales/ja/data.json +++ b/web/src/locales/ja/data.json @@ -196,6 +196,7 @@ "Failed to add": "追加できませんでした", "Failed to connect to server": "サーバーに接続できませんでした", "Failed to delete": "削除に失敗しました", + "Failed to get answer": "Failed to get answer", "Failed to save": "保存に失敗しました", "Favicon": "ファビコン", "Favicon - Tooltip": "組織のすべてのCasdoorページに使用されるFaviconアイコンのURL", @@ -544,6 +545,10 @@ "Enable QR code - Tooltip": "ログインするためにQRコードをスキャンすることを許可するかどうか", "Endpoint": "エンドポイント", "Endpoint (Intranet)": "エンドポイント(イントラネット)", + "From address": "From address", + "From address - Tooltip": "From address - Tooltip", + "From name": "From name", + "From name - Tooltip": "From name - Tooltip", "Host": "ホスト", "Host - Tooltip": "ホストの名前", "IdP": "IdP", diff --git a/web/src/locales/ko/data.json b/web/src/locales/ko/data.json index 47716d7f..dfbc0a44 100644 --- a/web/src/locales/ko/data.json +++ b/web/src/locales/ko/data.json @@ -196,6 +196,7 @@ "Failed to add": "추가하지 못했습니다", "Failed to connect to server": "서버에 연결하지 못했습니다", "Failed to delete": "삭제에 실패했습니다", + "Failed to get answer": "Failed to get answer", "Failed to save": "저장에 실패했습니다", "Favicon": "파비콘", "Favicon - Tooltip": "조직의 모든 Casdoor 페이지에서 사용되는 Favicon 아이콘 URL", @@ -544,6 +545,10 @@ "Enable QR code - Tooltip": "QR 코드를 스캔해서 로그인할 수 있는지 여부", "Endpoint": "엔드포인트", "Endpoint (Intranet)": "엔드포인트 (Intranet)", + "From address": "From address", + "From address - Tooltip": "From address - Tooltip", + "From name": "From name", + "From name - Tooltip": "From name - Tooltip", "Host": "호스트", "Host - Tooltip": "호스트의 이름", "IdP": "IdP", diff --git a/web/src/locales/ru/data.json b/web/src/locales/ru/data.json index b3e3c023..8240e4b9 100644 --- a/web/src/locales/ru/data.json +++ b/web/src/locales/ru/data.json @@ -196,6 +196,7 @@ "Failed to add": "Не удалось добавить", "Failed to connect to server": "Не удалось подключиться к серверу", "Failed to delete": "Не удалось удалить", + "Failed to get answer": "Failed to get answer", "Failed to save": "Не удалось сохранить", "Favicon": "Фавикон", "Favicon - Tooltip": "URL иконки Favicon, используемый на всех страницах организации Casdoor", @@ -544,6 +545,10 @@ "Enable QR code - Tooltip": "Разрешить ли сканирование QR-кода для входа в систему", "Endpoint": "Конечная точка", "Endpoint (Intranet)": "Конечная точка (интранет)", + "From address": "From address", + "From address - Tooltip": "From address - Tooltip", + "From name": "From name", + "From name - Tooltip": "From name - Tooltip", "Host": "Хост", "Host - Tooltip": "Имя хоста", "IdP": "IdP", diff --git a/web/src/locales/vi/data.json b/web/src/locales/vi/data.json index f500a2c8..da49535a 100644 --- a/web/src/locales/vi/data.json +++ b/web/src/locales/vi/data.json @@ -196,6 +196,7 @@ "Failed to add": "Không thể thêm được", "Failed to connect to server": "Không thể kết nối đến máy chủ", "Failed to delete": "Không thể xoá", + "Failed to get answer": "Failed to get answer", "Failed to save": "Không thể lưu được", "Favicon": "Favicon", "Favicon - Tooltip": "URL biểu tượng Favicon được sử dụng trong tất cả các trang của tổ chức Casdoor", @@ -544,6 +545,10 @@ "Enable QR code - Tooltip": "Cho phép quét mã QR để đăng nhập", "Endpoint": "Điểm cuối", "Endpoint (Intranet)": "Điểm kết thúc (mạng nội bộ)", + "From address": "From address", + "From address - Tooltip": "From address - Tooltip", + "From name": "From name", + "From name - Tooltip": "From name - Tooltip", "Host": "Chủ nhà", "Host - Tooltip": "Tên của người chủ chỗ ở", "IdP": "IdP", diff --git a/web/src/locales/zh/data.json b/web/src/locales/zh/data.json index 28c616c0..9f413aa4 100644 --- a/web/src/locales/zh/data.json +++ b/web/src/locales/zh/data.json @@ -196,6 +196,7 @@ "Failed to add": "添加失败", "Failed to connect to server": "连接服务器失败", "Failed to delete": "删除失败", + "Failed to get answer": "获取回答失败", "Failed to save": "保存失败", "Favicon": "Favicon", "Favicon - Tooltip": "该组织所有Casdoor页面中所使用的Favicon图标URL", @@ -544,6 +545,10 @@ "Enable QR code - Tooltip": "是否允许扫描二维码登录", "Endpoint": "地域节点 (外网)", "Endpoint (Intranet)": "地域节点 (内网)", + "From address": "发件人地址", + "From address - Tooltip": "邮件里发件人的邮箱地址", + "From name": "发件人名称", + "From name - Tooltip": "邮件里发件人的显示名称", "Host": "主机", "Host - Tooltip": "主机名", "IdP": "IdP",