From ef3d323f636ae0d68b84ccdcd4e9f926069e6ee2 Mon Sep 17 00:00:00 2001 From: Gucheng Wang Date: Fri, 3 Mar 2023 22:44:22 +0800 Subject: [PATCH] Improve SMS code --- controllers/service.go | 11 +++++++---- controllers/util.go | 2 +- object/sms.go | 17 ++++++++++------- web/src/TestSmsWidget.js | 2 +- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/controllers/service.go b/controllers/service.go index a005df10..d587f144 100644 --- a/controllers/service.go +++ b/controllers/service.go @@ -20,6 +20,7 @@ package controllers import ( "encoding/json" "fmt" + "strings" "github.com/casdoor/casdoor/object" "github.com/casdoor/casdoor/util" @@ -97,8 +98,11 @@ func (c *ApiController) SendEmail() { return } + code := "123456" + // "You have requested a verification code at Casdoor. Here is your code: %s, please enter in 5 minutes." + content := fmt.Sprintf(emailForm.Content, code) for _, receiver := range emailForm.Receivers { - err = object.SendEmail(provider, emailForm.Title, emailForm.Content, receiver, emailForm.Sender) + err = object.SendEmail(provider, emailForm.Title, content, receiver, emailForm.Sender) if err != nil { c.ResponseError(err.Error()) return @@ -130,10 +134,9 @@ func (c *ApiController) SendSms() { return } - invalidReceivers := checkSmsReceivers(smsForm) - + invalidReceivers := getInvalidSmsReceivers(smsForm) if len(invalidReceivers) != 0 { - c.ResponseError(fmt.Sprintf(c.T("service:Invalid phone receivers: %s"), invalidReceivers)) + c.ResponseError(fmt.Sprintf(c.T("service:Invalid phone receivers: %s"), strings.Join(invalidReceivers, ", "))) return } diff --git a/controllers/util.go b/controllers/util.go index 624db147..f3cc8428 100644 --- a/controllers/util.go +++ b/controllers/util.go @@ -198,7 +198,7 @@ func checkQuotaForUser(count int) error { return nil } -func checkSmsReceivers(smsForm SmsForm) []string { +func getInvalidSmsReceivers(smsForm SmsForm) []string { var invalidReceivers []string for _, receiver := range smsForm.Receivers { // The receiver phone format: E164 like +8613854673829 +441932567890 diff --git a/object/sms.go b/object/sms.go index 9b0c60a3..b8e2a5b3 100644 --- a/object/sms.go +++ b/object/sms.go @@ -17,14 +17,17 @@ package object import ( "strings" - "github.com/casdoor/go-sms-sender" + sender "github.com/casdoor/go-sms-sender" ) -func getSmsClient(provider *Provider) (go_sms_sender.SmsClient, error) { - client, err := go_sms_sender.NewSmsClient(provider.Type, provider.ClientId, provider.ClientSecret, provider.SignName, provider.TemplateCode, provider.AppId) +func getSmsClient(provider *Provider) (sender.SmsClient, error) { + var client sender.SmsClient + var err error - 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 provider.Type == sender.HuaweiCloud { + client, err = sender.NewSmsClient(provider.Type, provider.ClientId, provider.ClientSecret, provider.SignName, provider.TemplateCode, provider.ProviderUrl, provider.AppId) + } else { + client, err = sender.NewSmsClient(provider.Type, provider.ClientId, provider.ClientSecret, provider.SignName, provider.TemplateCode, provider.AppId) } if err != nil { return nil, err @@ -39,14 +42,14 @@ func SendSms(provider *Provider, content string, phoneNumbers ...string) error { return err } - if provider.Type == go_sms_sender.Aliyun { + if provider.Type == sender.Aliyun { for i, number := range phoneNumbers { phoneNumbers[i] = strings.TrimPrefix(number, "+") } } params := map[string]string{} - if provider.Type == go_sms_sender.TencentCloud { + if provider.Type == sender.TencentCloud { params["0"] = content } else { params["code"] = content diff --git a/web/src/TestSmsWidget.js b/web/src/TestSmsWidget.js index 16a6d7ce..6ffd963e 100644 --- a/web/src/TestSmsWidget.js +++ b/web/src/TestSmsWidget.js @@ -31,7 +31,7 @@ export function sendTestSms(provider, phone) { function testSmsProvider(provider, phone = "") { const SmsForm = { - content: provider.content, + content: "123456", receivers: [phone], };