mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 02:35:49 +08:00
Add phone provider.
This commit is contained in:
parent
08779b607d
commit
43db2de8d8
@ -7,15 +7,4 @@ driverName = mysql
|
||||
dataSourceName = root:123@tcp(localhost:3306)/
|
||||
dbName = casdoor
|
||||
authState = "casdoor"
|
||||
useProxy = false
|
||||
mailUser = ""
|
||||
mailPass = ""
|
||||
mailHost = ""
|
||||
mailPort = ""
|
||||
smsProvider = ""
|
||||
smsAccessId = ""
|
||||
smsAccessKey = ""
|
||||
smsAppId = ""
|
||||
smsSign = ""
|
||||
smsRegion = ""
|
||||
smsTemplateId = ""
|
||||
useProxy = false
|
@ -29,9 +29,15 @@ type Provider struct {
|
||||
Type string `xorm:"varchar(100)" json:"type"`
|
||||
ClientId string `xorm:"varchar(100)" json:"clientId"`
|
||||
ClientSecret string `xorm:"varchar(100)" json:"clientSecret"`
|
||||
Host string `xorm:"varchar(100)" json:"host"`
|
||||
Port int `json:"port"`
|
||||
ProviderUrl string `xorm:"varchar(200)" json:"providerUrl"`
|
||||
|
||||
Host string `xorm:"varchar(100)" json:"host"`
|
||||
Port int `json:"port"`
|
||||
|
||||
RegionId string `xorm:"varchar(100)" json:"regionId"`
|
||||
SignName string `xorm:"varchar(100)" json:"signName"`
|
||||
TemplateCode string `xorm:"varchar(100)" json:"templateCode"`
|
||||
|
||||
ProviderUrl string `xorm:"varchar(200)" json:"providerUrl"`
|
||||
}
|
||||
|
||||
func GetProviders(owner string) []*Provider {
|
||||
@ -76,6 +82,19 @@ func getDefaultEmailProvider() *Provider {
|
||||
return &provider
|
||||
}
|
||||
|
||||
func getDefaultPhoneProvider() *Provider {
|
||||
provider := Provider{Owner: "admin", Category: "Phone"}
|
||||
existed, err := adapter.Engine.Get(&provider)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if !existed {
|
||||
return nil
|
||||
}
|
||||
return &provider
|
||||
}
|
||||
|
||||
func UpdateProvider(id string, provider *Provider) bool {
|
||||
owner, name := util.GetOwnerAndNameFromId(id)
|
||||
if getProvider(owner, name) == nil {
|
||||
|
@ -15,34 +15,23 @@
|
||||
package object
|
||||
|
||||
import (
|
||||
"github.com/astaxie/beego"
|
||||
"fmt"
|
||||
|
||||
"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) string {
|
||||
provider := getDefaultPhoneProvider()
|
||||
if provider == nil {
|
||||
return "Please set an phone provider first"
|
||||
}
|
||||
client := go_sms_sender.NewSmsClient(provider.Type, provider.ClientId, provider.ClientSecret, provider.SignName, provider.RegionId, provider.TemplateCode)
|
||||
if client == nil {
|
||||
InitSmsClient()
|
||||
if client == nil {
|
||||
return "SMS config error"
|
||||
}
|
||||
return fmt.Sprintf("Unsupported provide type: %s", provider.Type)
|
||||
}
|
||||
|
||||
param := make(map[string]string)
|
||||
if provider == "tencent" {
|
||||
if provider.Type == "tencent" {
|
||||
param["0"] = code
|
||||
} else {
|
||||
param["code"] = code
|
||||
|
@ -79,7 +79,10 @@ class ProviderEditPage extends React.Component {
|
||||
);
|
||||
} else {
|
||||
return (
|
||||
[]
|
||||
[
|
||||
{id: 'aliyun', name: 'Aliyun'},
|
||||
{id: 'tencent', name: 'Tencent Cloud'},
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -160,26 +163,65 @@ class ProviderEditPage extends React.Component {
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
<Row style={{marginTop: '20px'}} >
|
||||
<Col style={{marginTop: '5px'}} span={2}>
|
||||
{i18next.t("provider:Host")}:
|
||||
</Col>
|
||||
<Col span={22} >
|
||||
<Input prefix={<LinkOutlined/>} value={this.state.provider.host} onChange={e => {
|
||||
this.updateProviderField('host', e.target.value);
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
<Row style={{marginTop: '20px'}} >
|
||||
<Col style={{marginTop: '5px'}} span={2}>
|
||||
{i18next.t("provider:Port")}:
|
||||
</Col>
|
||||
<Col span={22} >
|
||||
<InputNumber value={this.state.provider.port} onChange={value => {
|
||||
this.updateProviderField('port', value);
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
{
|
||||
this.state.provider.category === "Email" ? (
|
||||
<React.Fragment>
|
||||
<Row style={{marginTop: '20px'}} >
|
||||
<Col style={{marginTop: '5px'}} span={2}>
|
||||
{i18next.t("provider:Host")}:
|
||||
</Col>
|
||||
<Col span={22} >
|
||||
<Input prefix={<LinkOutlined/>} value={this.state.provider.host} onChange={e => {
|
||||
this.updateProviderField('host', e.target.value);
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
<Row style={{marginTop: '20px'}} >
|
||||
<Col style={{marginTop: '5px'}} span={2}>
|
||||
{i18next.t("provider:Port")}:
|
||||
</Col>
|
||||
<Col span={22} >
|
||||
<InputNumber value={this.state.provider.port} onChange={value => {
|
||||
this.updateProviderField('port', value);
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
</React.Fragment>
|
||||
) : this.state.provider.category === "Phone" ? (
|
||||
<React.Fragment>
|
||||
<Row style={{marginTop: '20px'}} >
|
||||
<Col style={{marginTop: '5px'}} span={2}>
|
||||
{i18next.t("provider:Region ID")}:
|
||||
</Col>
|
||||
<Col span={22} >
|
||||
<Input value={this.state.provider.regionId} onChange={e => {
|
||||
this.updateProviderField('regionId', e.target.value);
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
<Row style={{marginTop: '20px'}} >
|
||||
<Col style={{marginTop: '5px'}} span={2}>
|
||||
{i18next.t("provider:Sign Name")}:
|
||||
</Col>
|
||||
<Col span={22} >
|
||||
<Input value={this.state.provider.signName} onChange={e => {
|
||||
this.updateProviderField('signName', e.target.value);
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
<Row style={{marginTop: '20px'}} >
|
||||
<Col style={{marginTop: '5px'}} span={2}>
|
||||
{i18next.t("provider:Template Code")}:
|
||||
</Col>
|
||||
<Col span={22} >
|
||||
<Input value={this.state.provider.templateCode} onChange={e => {
|
||||
this.updateProviderField('templateCode', e.target.value);
|
||||
}} />
|
||||
</Col>
|
||||
</Row>
|
||||
</React.Fragment>
|
||||
) : null
|
||||
}
|
||||
<Row style={{marginTop: '20px'}} >
|
||||
<Col style={{marginTop: '5px'}} span={2}>
|
||||
{i18next.t("provider:Provider URL")}:
|
||||
|
@ -83,6 +83,11 @@
|
||||
"Type": "Type",
|
||||
"Client ID": "Client ID",
|
||||
"Client secret": "Client secret",
|
||||
"Host": "Host",
|
||||
"Port": "Port",
|
||||
"Region ID": "Region ID",
|
||||
"Sign Name": "Sign Name",
|
||||
"Template Code": "Template Code",
|
||||
"Provider URL": "Provider URL",
|
||||
"Edit Provider": "Edit Provider"
|
||||
},
|
||||
|
@ -83,6 +83,11 @@
|
||||
"Type": "类型",
|
||||
"Client ID": "Client ID",
|
||||
"Client secret": "Client secret",
|
||||
"Host": "主机",
|
||||
"Port": "端口号",
|
||||
"Region ID": "地域ID",
|
||||
"Sign Name": "签名名称",
|
||||
"Template Code": "模板CODE",
|
||||
"Provider URL": "提供商URL",
|
||||
"Edit Provider": "修改提供商"
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user