casdoor/object/sms.go

65 lines
1.9 KiB
Go
Raw Normal View History

2022-02-13 23:39:27 +08:00
// Copyright 2021 The Casdoor Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package object
import (
"strings"
2023-03-03 22:44:22 +08:00
sender "github.com/casdoor/go-sms-sender"
)
2021-05-15 13:43:21 +08:00
2023-03-03 22:44:22 +08:00
func getSmsClient(provider *Provider) (sender.SmsClient, error) {
var client sender.SmsClient
var err error
if provider.Type == sender.HuaweiCloud || provider.Type == sender.AzureACS {
2023-03-03 22:44:22 +08:00
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
}
return client, nil
}
func SendSms(provider *Provider, content string, phoneNumbers ...string) error {
client, err := getSmsClient(provider)
2021-09-05 10:48:03 +08:00
if err != nil {
return err
}
2021-05-14 18:19:47 +08:00
if provider.Type == sender.Twilio {
if provider.AppId != "" {
phoneNumbers = append([]string{provider.AppId}, phoneNumbers...)
}
} else if provider.Type == sender.Aliyun {
for i, number := range phoneNumbers {
phoneNumbers[i] = strings.TrimPrefix(number, "+86")
}
}
2021-09-05 11:10:27 +08:00
params := map[string]string{}
2023-03-03 22:44:22 +08:00
if provider.Type == sender.TencentCloud {
2021-09-05 11:10:27 +08:00
params["0"] = content
} else {
2021-09-05 11:10:27 +08:00
params["code"] = content
}
2021-09-05 11:10:27 +08:00
err = client.SendMessage(params, phoneNumbers...)
2021-09-05 10:48:03 +08:00
return err
}