mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-04 05:10:19 +08:00
feat: Allow to sign up with Email without verification (#728)
* feat: Allow to sign up with Email without verification by rule * Update account.go * Update SignupTable.js * Update SignupPage.js Co-authored-by: Yang Luo <hsluoyz@qq.com>
This commit is contained in:
@ -116,7 +116,7 @@ func (c *ApiController) Signup() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if application.IsSignupItemVisible("Email") && form.Email != "" {
|
if application.IsSignupItemVisible("Email") && application.GetSignupItemRule("Email") != "No verification" && form.Email != "" {
|
||||||
checkResult := object.CheckVerificationCode(form.Email, form.EmailCode)
|
checkResult := object.CheckVerificationCode(form.Email, form.EmailCode)
|
||||||
if len(checkResult) != 0 {
|
if len(checkResult) != 0 {
|
||||||
c.ResponseError(fmt.Sprintf("Email: %s", checkResult))
|
c.ResponseError(fmt.Sprintf("Email: %s", checkResult))
|
||||||
|
@ -109,7 +109,7 @@ func initBuiltInApplication() {
|
|||||||
{Name: "Display name", Visible: true, Required: true, Prompted: false, Rule: "None"},
|
{Name: "Display name", Visible: true, Required: true, Prompted: false, Rule: "None"},
|
||||||
{Name: "Password", Visible: true, Required: true, Prompted: false, Rule: "None"},
|
{Name: "Password", Visible: true, Required: true, Prompted: false, Rule: "None"},
|
||||||
{Name: "Confirm password", Visible: true, Required: true, Prompted: false, Rule: "None"},
|
{Name: "Confirm password", Visible: true, Required: true, Prompted: false, Rule: "None"},
|
||||||
{Name: "Email", Visible: true, Required: true, Prompted: false, Rule: "None"},
|
{Name: "Email", Visible: true, Required: true, Prompted: false, Rule: "Normal"},
|
||||||
{Name: "Phone", Visible: true, Required: true, Prompted: false, Rule: "None"},
|
{Name: "Phone", Visible: true, Required: true, Prompted: false, Rule: "None"},
|
||||||
{Name: "Agreement", Visible: true, Required: true, Prompted: false, Rule: "None"},
|
{Name: "Agreement", Visible: true, Required: true, Prompted: false, Rule: "None"},
|
||||||
},
|
},
|
||||||
|
@ -43,7 +43,7 @@ class ApplicationListPage extends BaseListPage {
|
|||||||
{name: "Display name", visible: true, required: true, rule: "None"},
|
{name: "Display name", visible: true, required: true, rule: "None"},
|
||||||
{name: "Password", visible: true, required: true, rule: "None"},
|
{name: "Password", visible: true, required: true, rule: "None"},
|
||||||
{name: "Confirm password", visible: true, required: true, rule: "None"},
|
{name: "Confirm password", visible: true, required: true, rule: "None"},
|
||||||
{name: "Email", visible: true, required: true, rule: "None"},
|
{name: "Email", visible: true, required: true, rule: "Normal"},
|
||||||
{name: "Phone", visible: true, required: true, rule: "None"},
|
{name: "Phone", visible: true, required: true, rule: "None"},
|
||||||
{name: "Agreement", visible: true, required: true, rule: "None"},
|
{name: "Agreement", visible: true, required: true, rule: "None"},
|
||||||
],
|
],
|
||||||
|
@ -159,7 +159,7 @@ class SignupTable extends React.Component {
|
|||||||
title: i18next.t("provider:rule"),
|
title: i18next.t("provider:rule"),
|
||||||
dataIndex: 'rule',
|
dataIndex: 'rule',
|
||||||
key: 'rule',
|
key: 'rule',
|
||||||
width: '120px',
|
width: '155px',
|
||||||
render: (text, record, index) => {
|
render: (text, record, index) => {
|
||||||
let options = [];
|
let options = [];
|
||||||
if (record.name === "ID") {
|
if (record.name === "ID") {
|
||||||
@ -167,12 +167,17 @@ class SignupTable extends React.Component {
|
|||||||
{id: 'Random', name: 'Random'},
|
{id: 'Random', name: 'Random'},
|
||||||
{id: 'Incremental', name: 'Incremental'},
|
{id: 'Incremental', name: 'Incremental'},
|
||||||
];
|
];
|
||||||
} if (record.name === "Display name") {
|
} else if (record.name === "Display name") {
|
||||||
options = [
|
options = [
|
||||||
{id: 'None', name: 'None'},
|
{id: 'None', name: 'None'},
|
||||||
{id: 'Real name', name: 'Real name'},
|
{id: 'Real name', name: 'Real name'},
|
||||||
{id: 'First, last', name: 'First, last'},
|
{id: 'First, last', name: 'First, last'},
|
||||||
];
|
];
|
||||||
|
} else if (record.name === "Email") {
|
||||||
|
options = [
|
||||||
|
{id: 'Normal', name: 'Normal'},
|
||||||
|
{id: 'No Verification', name: 'No verification'},
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.length === 0) {
|
if (options.length === 0) {
|
||||||
|
@ -325,20 +325,23 @@ class SignupPage extends React.Component {
|
|||||||
>
|
>
|
||||||
<Input onChange={e => this.setState({email: e.target.value})} />
|
<Input onChange={e => this.setState({email: e.target.value})} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
{
|
||||||
name="emailCode"
|
signupItem.rule !== "No verification" &&
|
||||||
key="emailCode"
|
<Form.Item
|
||||||
label={i18next.t("code:Email code")}
|
name="emailCode"
|
||||||
rules={[{
|
key="emailCode"
|
||||||
required: required,
|
label={i18next.t("code:Email code")}
|
||||||
message: i18next.t("code:Please input your verification code!"),
|
rules={[{
|
||||||
}]}
|
required: required,
|
||||||
>
|
message: i18next.t("code:Please input your verification code!"),
|
||||||
<CountDownInput
|
}]}
|
||||||
disabled={!this.state.validEmail}
|
>
|
||||||
onButtonClickArgs={[this.state.email, "email", Setting.getApplicationOrgName(application)]}
|
<CountDownInput
|
||||||
/>
|
disabled={!this.state.validEmail}
|
||||||
</Form.Item>
|
onButtonClickArgs={[this.state.email, "email", Setting.getApplicationOrgName(application)]}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
}
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
)
|
)
|
||||||
} else if (signupItem.name === "Phone") {
|
} else if (signupItem.name === "Phone") {
|
||||||
|
Reference in New Issue
Block a user