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:
Kininaru
2021-05-12 22:09:41 +08:00
parent 400e335e68
commit 827930a020
10 changed files with 191 additions and 15 deletions

53
object/sms.go Normal file
View 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)
}

View File

@ -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