diff --git a/go.mod b/go.mod index 6274f18f..6f74b3a6 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect github.com/casbin/casbin/v2 v2.30.1 github.com/casbin/xorm-adapter/v2 v2.5.1 - github.com/casdoor/go-sms-sender v0.0.5 + github.com/casdoor/go-sms-sender v0.2.0 github.com/dchest/captcha v0.0.0-20200903113550-03f5f0333e1f github.com/go-gomail/gomail v0.0.0-20160411212932-81ebce5c23df github.com/go-ldap/ldap/v3 v3.3.0 diff --git a/go.sum b/go.sum index 4fd3d42d..8c537923 100644 --- a/go.sum +++ b/go.sum @@ -81,6 +81,8 @@ github.com/casbin/xorm-adapter/v2 v2.5.1 h1:BkpIxRHKa0s3bSMx173PpuU7oTs+Zw7XmD0B github.com/casbin/xorm-adapter/v2 v2.5.1/go.mod h1:AeH4dBKHC9/zYxzdPVHhPDzF8LYLqjDdb767CWJoV54= github.com/casdoor/go-sms-sender v0.0.5 h1:9qhlMM+UoSOvvY7puUULqSHBBA7fbe02Px/tzchQboo= github.com/casdoor/go-sms-sender v0.0.5/go.mod h1:TMM/BsZQAa+7JVDXl2KqgxnzZgCjmHEX5MBN662mM5M= +github.com/casdoor/go-sms-sender v0.2.0 h1:52bin4EBOPzOee64s9UK7jxd22FODvT9/+Y/Z+PSHpg= +github.com/casdoor/go-sms-sender v0.2.0/go.mod h1:fsZsNnALvFIo+HFcE1U/oCQv4ZT42FdglXKMsEm3WSk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= diff --git a/object/sms.go b/object/sms.go index 4dd4fceb..73df87b3 100644 --- a/object/sms.go +++ b/object/sms.go @@ -18,6 +18,9 @@ import "github.com/casdoor/go-sms-sender" func SendSms(provider *Provider, content string, phoneNumbers ...string) error { client, err := go_sms_sender.NewSmsClient(provider.Type, provider.ClientId, provider.ClientSecret, provider.SignName, provider.TemplateCode, provider.AppId) + if provider.Type == go_sms_sender.HuaweiCloud { + client, err = go_sms_sender.NewSmsClient(provider.Type, provider.ClientId, provider.ClientSecret, provider.SignName, provider.TemplateCode, provider.ProviderUrl, provider.AppId) + } if err != nil { return err } diff --git a/web/src/ProviderEditPage.js b/web/src/ProviderEditPage.js index ba3daa4d..8993a0ef 100644 --- a/web/src/ProviderEditPage.js +++ b/web/src/ProviderEditPage.js @@ -72,6 +72,8 @@ class ProviderEditPage extends React.Component { case "SMS": if (this.state.provider.type === "Volc Engine SMS") return Setting.getLabel(i18next.t("provider:Access key"), i18next.t("provider:Access key - Tooltip")); + if (this.state.provider.type === "Huawei Cloud SMS") + return Setting.getLabel(i18next.t("provider:App key"), i18next.t("provider:App key - Tooltip")); default: return Setting.getLabel(i18next.t("provider:Client ID"), i18next.t("provider:Client ID - Tooltip")); } @@ -84,6 +86,8 @@ class ProviderEditPage extends React.Component { case "SMS": if (this.state.provider.type === "Volc Engine SMS") return Setting.getLabel(i18next.t("provider:Secret access key"), i18next.t("provider:SecretAccessKey - Tooltip")); + if (this.state.provider.type === "Huawei Cloud SMS") + return Setting.getLabel(i18next.t("provider:App secret"), i18next.t("provider:AppSecret - Tooltip")); default: return Setting.getLabel(i18next.t("provider:Client secret"), i18next.t("provider:Client secret - Tooltip")); } @@ -103,6 +107,9 @@ class ProviderEditPage extends React.Component { } else if (this.state.provider.category === "SMS" && this.state.provider.type === "Volc Engine SMS") { text = i18next.t("provider:SMS account"); tooltip = i18next.t("provider:SMS account - Tooltip"); + } else if (this.state.provider.category === "SMS" && this.state.provider.type === "Huawei Cloud SMS") { + text = i18next.t("provider:Channel No."); + tooltip = i18next.t("provider:Channel No. - Tooltip"); } else { return null; } diff --git a/web/src/Setting.js b/web/src/Setting.js index 219749c9..7bdbd02d 100644 --- a/web/src/Setting.js +++ b/web/src/Setting.js @@ -423,6 +423,7 @@ export function getProviderTypeOptions(category) { {id: 'Aliyun SMS', name: 'Aliyun SMS'}, {id: 'Tencent Cloud SMS', name: 'Tencent Cloud SMS'}, {id: 'Volc Engine SMS', name: 'Volc Engine SMS'}, + {id: 'Huawei Cloud SMS', name: 'Huawei Cloud SMS'}, ] ); } else if (category === "Storage") { diff --git a/web/src/auth/Provider.js b/web/src/auth/Provider.js index 159770b2..727d6f06 100644 --- a/web/src/auth/Provider.js +++ b/web/src/auth/Provider.js @@ -112,6 +112,10 @@ const otherProviderInfo = { logo: `${StaticBaseUrl}/img/social_volc_engine.jpg`, url: "https://www.volcengine.com/products/cloud-sms", }, + "Huawei Cloud SMS": { + logo: `${StaticBaseUrl}/img/social_huawei.png`, + url: "https://www.huaweicloud.com/product/msgsms.html", + }, }, Email: { "Default": {