mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-03 12:30:19 +08:00
feat: add reset phone by verification code
Signed-off-by: Kininaru <shiftregister233@outlook.com> fixed client bug Signed-off-by: Kininaru <shiftregister233@outlook.com> feat: add i18n Signed-off-by: Kininaru <shiftregister233@outlook.com> add Casbin License Signed-off-by: Kininaru <shiftregister233@outlook.com> removed port from remoteaddr Signed-off-by: Kininaru <shiftregister233@outlook.com>
This commit is contained in:
53
object/sms.go
Normal file
53
object/sms.go
Normal file
@ -0,0 +1,53 @@
|
||||
// Copyright 2021 The casbin 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 (
|
||||
"fmt"
|
||||
|
||||
"github.com/astaxie/beego"
|
||||
"github.com/casdoor/go-sms-sender"
|
||||
)
|
||||
|
||||
var client go_sms_sender.SmsClient
|
||||
var provider string
|
||||
|
||||
func InitSmsClient() {
|
||||
provider = beego.AppConfig.String("smsProvider")
|
||||
accessId := beego.AppConfig.String("smsAccessId")
|
||||
accessKey := beego.AppConfig.String("smsAccessKey")
|
||||
appId := beego.AppConfig.String("smsAppId")
|
||||
sign := beego.AppConfig.String("smsSign")
|
||||
region := beego.AppConfig.String("smsRegion")
|
||||
templateId := beego.AppConfig.String("smsTemplateId")
|
||||
client = go_sms_sender.NewSmsClient(provider, accessId, accessKey, sign, region, templateId, appId)
|
||||
}
|
||||
|
||||
func SendCodeToPhone(phone, code string) {
|
||||
if client == nil {
|
||||
InitSmsClient()
|
||||
if client == nil {
|
||||
fmt.Println("Sms Config Error")
|
||||
return
|
||||
}
|
||||
}
|
||||
param := make(map[string]string)
|
||||
if provider == "tencent" {
|
||||
param["0"] = code
|
||||
} else {
|
||||
param["code"] = code
|
||||
}
|
||||
client.SendMessage(param, phone)
|
||||
}
|
@ -1,8 +1,23 @@
|
||||
// Copyright 2021 The casbin 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 (
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
@ -15,6 +30,9 @@ type VerificationRecord struct {
|
||||
}
|
||||
|
||||
func SendVerificationCodeToEmail(remoteAddr, dest string) string {
|
||||
if strings.Index(dest, "@") < 0 {
|
||||
return "Invalid Email address"
|
||||
}
|
||||
title := "Casdoor Code"
|
||||
sender := "Casdoor Admin"
|
||||
code := getRandomCode(5)
|
||||
@ -31,6 +49,16 @@ func SendVerificationCodeToEmail(remoteAddr, dest string) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func SendVerificationCodeToPhone(remoteAddr, dest string) string {
|
||||
code := getRandomCode(5)
|
||||
if result := AddToVerificationRecord(remoteAddr, dest, code); len(result) != 0 {
|
||||
return result
|
||||
}
|
||||
|
||||
SendCodeToPhone(dest, code)
|
||||
return ""
|
||||
}
|
||||
|
||||
func AddToVerificationRecord(remoteAddr, dest, code string) string {
|
||||
var record VerificationRecord
|
||||
record.RemoteAddr = remoteAddr
|
||||
|
Reference in New Issue
Block a user