mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-03 20:50:19 +08:00
Can set email title and content now.
This commit is contained in:
@ -72,7 +72,7 @@ func (c *ApiController) SendVerificationCode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
provider := application.GetEmailProvider()
|
provider := application.GetEmailProvider()
|
||||||
msg = object.SendVerificationCodeToEmail(user, provider, remoteAddr, dest)
|
msg = object.SendVerificationCodeToEmail(organization, user, provider, remoteAddr, dest)
|
||||||
case "phone":
|
case "phone":
|
||||||
if !util.IsPhoneCnValid(dest) {
|
if !util.IsPhoneCnValid(dest) {
|
||||||
c.ResponseError("Invalid phone number")
|
c.ResponseError("Invalid phone number")
|
||||||
@ -86,7 +86,7 @@ func (c *ApiController) SendVerificationCode() {
|
|||||||
|
|
||||||
dest = fmt.Sprintf("+%s%s", org.PhonePrefix, dest)
|
dest = fmt.Sprintf("+%s%s", org.PhonePrefix, dest)
|
||||||
provider := application.GetSmsProvider()
|
provider := application.GetSmsProvider()
|
||||||
msg = object.SendVerificationCodeToPhone(user, provider, remoteAddr, dest)
|
msg = object.SendVerificationCodeToPhone(organization, user, provider, remoteAddr, dest)
|
||||||
}
|
}
|
||||||
|
|
||||||
status := "ok"
|
status := "ok"
|
||||||
|
@ -32,6 +32,8 @@ type Provider struct {
|
|||||||
|
|
||||||
Host string `xorm:"varchar(100)" json:"host"`
|
Host string `xorm:"varchar(100)" json:"host"`
|
||||||
Port int `json:"port"`
|
Port int `json:"port"`
|
||||||
|
Title string `xorm:"varchar(100)" json:"title"`
|
||||||
|
Content string `xorm:"varchar(1000)" json:"content"`
|
||||||
|
|
||||||
RegionId string `xorm:"varchar(100)" json:"regionId"`
|
RegionId string `xorm:"varchar(100)" json:"regionId"`
|
||||||
SignName string `xorm:"varchar(100)" json:"signName"`
|
SignName string `xorm:"varchar(100)" json:"signName"`
|
||||||
|
@ -39,17 +39,18 @@ type VerificationRecord struct {
|
|||||||
IsUsed bool
|
IsUsed bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func SendVerificationCodeToEmail(user *User, provider *Provider, remoteAddr string, dest string) string {
|
func SendVerificationCodeToEmail(organization *Organization, user *User, provider *Provider, remoteAddr string, dest string) string {
|
||||||
if provider == nil {
|
if provider == nil {
|
||||||
return "Please set an Email provider first"
|
return "Please set an Email provider first"
|
||||||
}
|
}
|
||||||
|
|
||||||
title := "Casdoor Verification Code"
|
sender := organization.DisplayName
|
||||||
sender := "Casdoor"
|
title := provider.Title
|
||||||
code := getRandomCode(5)
|
code := getRandomCode(5)
|
||||||
content := fmt.Sprintf("You have requested a verification code at Casdoor. Here is your code: %s, please enter in 5 minutes.", code)
|
// "You have requested a verification code at Casdoor. Here is your code: %s, please enter in 5 minutes."
|
||||||
|
content := fmt.Sprintf(provider.Content, code)
|
||||||
|
|
||||||
if result := AddToVerificationRecord(user, provider, remoteAddr, "Email", dest, code); len(result) != 0 {
|
if result := AddToVerificationRecord(user, provider, remoteAddr, provider.Category, dest, code); len(result) != 0 {
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,13 +65,13 @@ func SendVerificationCodeToEmail(user *User, provider *Provider, remoteAddr stri
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func SendVerificationCodeToPhone(user *User, provider *Provider, remoteAddr string, dest string) string {
|
func SendVerificationCodeToPhone(organization *Organization, user *User, provider *Provider, remoteAddr string, dest string) string {
|
||||||
if provider == nil {
|
if provider == nil {
|
||||||
return "Please set a SMS provider first"
|
return "Please set a SMS provider first"
|
||||||
}
|
}
|
||||||
|
|
||||||
code := getRandomCode(5)
|
code := getRandomCode(5)
|
||||||
if result := AddToVerificationRecord(user, provider, remoteAddr, "SMS", dest, code); len(result) != 0 {
|
if result := AddToVerificationRecord(user, provider, remoteAddr, provider.Category, dest, code); len(result) != 0 {
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,13 +85,12 @@ func AddToVerificationRecord(user *User, provider *Provider, remoteAddr, recordT
|
|||||||
if user != nil {
|
if user != nil {
|
||||||
record.User = user.GetId()
|
record.User = user.GetId()
|
||||||
}
|
}
|
||||||
has, err := adapter.Engine.Get(&record)
|
has, err := adapter.Engine.Desc("created_time").Get(&record)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
now := time.Now().Unix()
|
now := time.Now().Unix()
|
||||||
|
|
||||||
if has && now-record.Time < 60 {
|
if has && now-record.Time < 60 {
|
||||||
return "You can only send one code in 60s."
|
return "You can only send one code in 60s."
|
||||||
}
|
}
|
||||||
@ -108,12 +108,7 @@ func AddToVerificationRecord(user *User, provider *Provider, remoteAddr, recordT
|
|||||||
record.Time = now
|
record.Time = now
|
||||||
record.IsUsed = false
|
record.IsUsed = false
|
||||||
|
|
||||||
if has {
|
|
||||||
_, err = adapter.Engine.ID(core.PK{remoteAddr, recordType}).AllCols().Update(record)
|
|
||||||
} else {
|
|
||||||
_, err = adapter.Engine.Insert(record)
|
_, err = adapter.Engine.Insert(record)
|
||||||
}
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ import * as Setting from "./Setting";
|
|||||||
import i18next from "i18next";
|
import i18next from "i18next";
|
||||||
|
|
||||||
const { Option } = Select;
|
const { Option } = Select;
|
||||||
|
const { TextArea } = Input;
|
||||||
|
|
||||||
class ProviderEditPage extends React.Component {
|
class ProviderEditPage extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@ -126,6 +127,8 @@ class ProviderEditPage extends React.Component {
|
|||||||
this.updateProviderField('type', 'GitHub');
|
this.updateProviderField('type', 'GitHub');
|
||||||
} else if (value === "Email") {
|
} else if (value === "Email") {
|
||||||
this.updateProviderField('type', 'Default');
|
this.updateProviderField('type', 'Default');
|
||||||
|
this.updateProviderField('title', 'Casdoor Verification Code');
|
||||||
|
this.updateProviderField('content', 'You have requested a verification code at Casdoor. Here is your code: %s, please enter in 5 minutes.');
|
||||||
} else if (value === "SMS") {
|
} else if (value === "SMS") {
|
||||||
this.updateProviderField('type', 'aliyun');
|
this.updateProviderField('type', 'aliyun');
|
||||||
}
|
}
|
||||||
@ -195,6 +198,26 @@ class ProviderEditPage extends React.Component {
|
|||||||
}} />
|
}} />
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
|
<Row style={{marginTop: '20px'}} >
|
||||||
|
<Col style={{marginTop: '5px'}} span={2}>
|
||||||
|
{i18next.t("provider:Email Title")}:
|
||||||
|
</Col>
|
||||||
|
<Col span={22} >
|
||||||
|
<Input value={this.state.provider.title} onChange={e => {
|
||||||
|
this.updateProviderField('title', e.target.value);
|
||||||
|
}} />
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
<Row style={{marginTop: '20px'}} >
|
||||||
|
<Col style={{marginTop: '5px'}} span={2}>
|
||||||
|
{i18next.t("provider:Email Content")}:
|
||||||
|
</Col>
|
||||||
|
<Col span={22} >
|
||||||
|
<TextArea autoSize={{minRows: 1, maxRows: 100}} value={this.state.provider.content} onChange={e => {
|
||||||
|
this.updateProviderField('content', e.target.value);
|
||||||
|
}} />
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
) : this.state.provider.category === "SMS" ? (
|
) : this.state.provider.category === "SMS" ? (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
|
@ -97,6 +97,8 @@
|
|||||||
"Client secret": "Client secret",
|
"Client secret": "Client secret",
|
||||||
"Host": "Host",
|
"Host": "Host",
|
||||||
"Port": "Port",
|
"Port": "Port",
|
||||||
|
"Email Title": "Email Title",
|
||||||
|
"Email Content": "Email Content",
|
||||||
"Region ID": "Region ID",
|
"Region ID": "Region ID",
|
||||||
"Sign Name": "Sign Name",
|
"Sign Name": "Sign Name",
|
||||||
"Template Code": "Template Code",
|
"Template Code": "Template Code",
|
||||||
|
@ -97,6 +97,8 @@
|
|||||||
"Client secret": "Client secret",
|
"Client secret": "Client secret",
|
||||||
"Host": "主机",
|
"Host": "主机",
|
||||||
"Port": "端口号",
|
"Port": "端口号",
|
||||||
|
"Email Title": "邮件标题",
|
||||||
|
"Email Content": "邮件内容",
|
||||||
"Region ID": "地域ID",
|
"Region ID": "地域ID",
|
||||||
"Sign Name": "签名名称",
|
"Sign Name": "签名名称",
|
||||||
"Template Code": "模板CODE",
|
"Template Code": "模板CODE",
|
||||||
|
Reference in New Issue
Block a user