mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-03 12:30:19 +08:00
Improve SMS code
This commit is contained in:
@ -20,6 +20,7 @@ package controllers
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/casdoor/casdoor/object"
|
"github.com/casdoor/casdoor/object"
|
||||||
"github.com/casdoor/casdoor/util"
|
"github.com/casdoor/casdoor/util"
|
||||||
@ -97,8 +98,11 @@ func (c *ApiController) SendEmail() {
|
|||||||
return
|
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 {
|
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 {
|
if err != nil {
|
||||||
c.ResponseError(err.Error())
|
c.ResponseError(err.Error())
|
||||||
return
|
return
|
||||||
@ -130,10 +134,9 @@ func (c *ApiController) SendSms() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
invalidReceivers := checkSmsReceivers(smsForm)
|
invalidReceivers := getInvalidSmsReceivers(smsForm)
|
||||||
|
|
||||||
if len(invalidReceivers) != 0 {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ func checkQuotaForUser(count int) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkSmsReceivers(smsForm SmsForm) []string {
|
func getInvalidSmsReceivers(smsForm SmsForm) []string {
|
||||||
var invalidReceivers []string
|
var invalidReceivers []string
|
||||||
for _, receiver := range smsForm.Receivers {
|
for _, receiver := range smsForm.Receivers {
|
||||||
// The receiver phone format: E164 like +8613854673829 +441932567890
|
// The receiver phone format: E164 like +8613854673829 +441932567890
|
||||||
|
@ -17,14 +17,17 @@ package object
|
|||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/casdoor/go-sms-sender"
|
sender "github.com/casdoor/go-sms-sender"
|
||||||
)
|
)
|
||||||
|
|
||||||
func getSmsClient(provider *Provider) (go_sms_sender.SmsClient, error) {
|
func getSmsClient(provider *Provider) (sender.SmsClient, error) {
|
||||||
client, err := go_sms_sender.NewSmsClient(provider.Type, provider.ClientId, provider.ClientSecret, provider.SignName, provider.TemplateCode, provider.AppId)
|
var client sender.SmsClient
|
||||||
|
var err error
|
||||||
|
|
||||||
if provider.Type == go_sms_sender.HuaweiCloud {
|
if provider.Type == sender.HuaweiCloud {
|
||||||
client, err = go_sms_sender.NewSmsClient(provider.Type, provider.ClientId, provider.ClientSecret, provider.SignName, provider.TemplateCode, provider.ProviderUrl, provider.AppId)
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -39,14 +42,14 @@ func SendSms(provider *Provider, content string, phoneNumbers ...string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if provider.Type == go_sms_sender.Aliyun {
|
if provider.Type == sender.Aliyun {
|
||||||
for i, number := range phoneNumbers {
|
for i, number := range phoneNumbers {
|
||||||
phoneNumbers[i] = strings.TrimPrefix(number, "+")
|
phoneNumbers[i] = strings.TrimPrefix(number, "+")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
params := map[string]string{}
|
params := map[string]string{}
|
||||||
if provider.Type == go_sms_sender.TencentCloud {
|
if provider.Type == sender.TencentCloud {
|
||||||
params["0"] = content
|
params["0"] = content
|
||||||
} else {
|
} else {
|
||||||
params["code"] = content
|
params["code"] = content
|
||||||
|
@ -31,7 +31,7 @@ export function sendTestSms(provider, phone) {
|
|||||||
|
|
||||||
function testSmsProvider(provider, phone = "") {
|
function testSmsProvider(provider, phone = "") {
|
||||||
const SmsForm = {
|
const SmsForm = {
|
||||||
content: provider.content,
|
content: "123456",
|
||||||
receivers: [phone],
|
receivers: [phone],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user