mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 10:45:47 +08:00
Improve signup page.
This commit is contained in:
parent
02b1feb2e5
commit
3274bd0c7c
@ -53,6 +53,16 @@ class ApplicationListPage extends React.Component {
|
|||||||
enablePassword: true,
|
enablePassword: true,
|
||||||
enableSignUp: true,
|
enableSignUp: true,
|
||||||
providers: [],
|
providers: [],
|
||||||
|
signupItems: [
|
||||||
|
{name: "ID", visible: false, required: true, rule: "Random"},
|
||||||
|
{name: "Username", visible: true, required: true, rule: "None"},
|
||||||
|
{name: "Display name", visible: true, required: true, rule: "None"},
|
||||||
|
{name: "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: "Phone", visible: true, required: true, rule: "None"},
|
||||||
|
{name: "Agreement", visible: true, required: true, rule: "None"},
|
||||||
|
],
|
||||||
redirectUris: ["http://localhost:9000/callback"],
|
redirectUris: ["http://localhost:9000/callback"],
|
||||||
expireInHours: 24 * 7,
|
expireInHours: 24 * 7,
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@ class SignupTable extends React.Component {
|
|||||||
{id: 'Affiliation', name: 'Affiliation'},
|
{id: 'Affiliation', name: 'Affiliation'},
|
||||||
{id: 'Email', name: 'Email'},
|
{id: 'Email', name: 'Email'},
|
||||||
{id: 'Password', name: 'Password'},
|
{id: 'Password', name: 'Password'},
|
||||||
{id: 'Confirm', name: 'Confirm'},
|
{id: 'Confirm password', name: 'Confirm password'},
|
||||||
{id: 'Phone', name: 'Phone'},
|
{id: 'Phone', name: 'Phone'},
|
||||||
{id: 'Agreement', name: 'Agreement'},
|
{id: 'Agreement', name: 'Agreement'},
|
||||||
].map((item, index) => <Option key={index} value={item.id}>{item.name}</Option>)
|
].map((item, index) => <Option key={index} value={item.id}>{item.name}</Option>)
|
||||||
@ -139,6 +139,7 @@ class SignupTable extends React.Component {
|
|||||||
{id: 'None', name: 'None'},
|
{id: 'None', name: 'None'},
|
||||||
{id: 'Random', name: 'Random'},
|
{id: 'Random', name: 'Random'},
|
||||||
{id: 'Incremental', name: 'Incremental'},
|
{id: 'Incremental', name: 'Incremental'},
|
||||||
|
{id: 'Personal', name: 'Personal'},
|
||||||
].map((item, index) => <Option key={index} value={item.id}>{item.name}</Option>)
|
].map((item, index) => <Option key={index} value={item.id}>{item.name}</Option>)
|
||||||
}
|
}
|
||||||
</Select>
|
</Select>
|
||||||
|
@ -131,6 +131,8 @@ class SignupPage extends React.Component {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const required = signupItem.required;
|
||||||
|
|
||||||
if (signupItem.name === "Username") {
|
if (signupItem.name === "Username") {
|
||||||
return (
|
return (
|
||||||
<Form.Item
|
<Form.Item
|
||||||
@ -138,7 +140,7 @@ class SignupPage extends React.Component {
|
|||||||
label={i18next.t("signup:Username")}
|
label={i18next.t("signup:Username")}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: true,
|
required: required,
|
||||||
message: i18next.t("login:Please input your username!"),
|
message: i18next.t("login:Please input your username!"),
|
||||||
whitespace: true,
|
whitespace: true,
|
||||||
},
|
},
|
||||||
@ -151,11 +153,11 @@ class SignupPage extends React.Component {
|
|||||||
return (
|
return (
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name="name"
|
name="name"
|
||||||
label={i18next.t("general:Display name")}
|
label={signupItem.rule === "Personal" ? i18next.t("general:Personal name") : i18next.t("general:Display name")}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: true,
|
required: required,
|
||||||
message: i18next.t("signup:Please input your display name!"),
|
message: signupItem.rule === "Personal" ? i18next.t("signup:Please input your personal name!") : i18next.t("signup:Please input your display name!"),
|
||||||
whitespace: true,
|
whitespace: true,
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
@ -170,7 +172,7 @@ class SignupPage extends React.Component {
|
|||||||
label={i18next.t("user:Affiliation")}
|
label={i18next.t("user:Affiliation")}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: true,
|
required: required,
|
||||||
message: i18next.t("signup:Please input your affiliation!"),
|
message: i18next.t("signup:Please input your affiliation!"),
|
||||||
whitespace: true,
|
whitespace: true,
|
||||||
},
|
},
|
||||||
@ -191,7 +193,7 @@ class SignupPage extends React.Component {
|
|||||||
message: i18next.t("signup:The input is not valid Email!"),
|
message: i18next.t("signup:The input is not valid Email!"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
required: true,
|
required: required,
|
||||||
message: i18next.t("signup:Please input your Email!"),
|
message: i18next.t("signup:Please input your Email!"),
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
@ -202,7 +204,7 @@ class SignupPage extends React.Component {
|
|||||||
name="emailCode"
|
name="emailCode"
|
||||||
label={i18next.t("signup:Email code")}
|
label={i18next.t("signup:Email code")}
|
||||||
rules={[{
|
rules={[{
|
||||||
required: true,
|
required: required,
|
||||||
message: i18next.t("signup:Please input your verification code!"),
|
message: i18next.t("signup:Please input your verification code!"),
|
||||||
}]}
|
}]}
|
||||||
>
|
>
|
||||||
@ -217,44 +219,45 @@ class SignupPage extends React.Component {
|
|||||||
)
|
)
|
||||||
} else if (signupItem.name === "Password") {
|
} else if (signupItem.name === "Password") {
|
||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<Form.Item
|
||||||
<Form.Item
|
name="password"
|
||||||
name="password"
|
label={i18next.t("general:Password")}
|
||||||
label={i18next.t("general:Password")}
|
rules={[
|
||||||
rules={[
|
{
|
||||||
{
|
required: required,
|
||||||
required: true,
|
message: i18next.t("login:Please input your password!"),
|
||||||
message: i18next.t("login:Please input your password!"),
|
},
|
||||||
},
|
]}
|
||||||
]}
|
hasFeedback
|
||||||
hasFeedback
|
>
|
||||||
>
|
<Input.Password />
|
||||||
<Input.Password />
|
</Form.Item>
|
||||||
</Form.Item>
|
)
|
||||||
<Form.Item
|
} else if (signupItem.name === "Confirm password") {
|
||||||
name="confirm"
|
return (
|
||||||
label={i18next.t("signup:Confirm")}
|
<Form.Item
|
||||||
dependencies={['password']}
|
name="confirm"
|
||||||
hasFeedback
|
label={i18next.t("signup:Confirm")}
|
||||||
rules={[
|
dependencies={['password']}
|
||||||
{
|
hasFeedback
|
||||||
required: true,
|
rules={[
|
||||||
message: i18next.t("signup:Please confirm your password!"),
|
{
|
||||||
},
|
required: required,
|
||||||
({ getFieldValue }) => ({
|
message: i18next.t("signup:Please confirm your password!"),
|
||||||
validator(rule, value) {
|
},
|
||||||
if (!value || getFieldValue('password') === value) {
|
({ getFieldValue }) => ({
|
||||||
return Promise.resolve();
|
validator(rule, value) {
|
||||||
}
|
if (!value || getFieldValue('password') === value) {
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
|
||||||
return Promise.reject(i18next.t("signup:Your confirmed password is inconsistent with the password!"));
|
return Promise.reject(i18next.t("signup:Your confirmed password is inconsistent with the password!"));
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<Input.Password />
|
<Input.Password />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</React.Fragment>
|
|
||||||
)
|
)
|
||||||
} else if (signupItem.name === "Phone") {
|
} else if (signupItem.name === "Phone") {
|
||||||
return (
|
return (
|
||||||
@ -264,7 +267,7 @@ class SignupPage extends React.Component {
|
|||||||
label={i18next.t("general:Phone")}
|
label={i18next.t("general:Phone")}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: true,
|
required: required,
|
||||||
message: i18next.t("signup:Please input your phone number!"),
|
message: i18next.t("signup:Please input your phone number!"),
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
@ -282,7 +285,7 @@ class SignupPage extends React.Component {
|
|||||||
label={i18next.t("signup:Phone code")}
|
label={i18next.t("signup:Phone code")}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: true,
|
required: required,
|
||||||
message: i18next.t("signup:Please input your phone verification code!"),
|
message: i18next.t("signup:Please input your phone verification code!"),
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
@ -301,6 +304,12 @@ class SignupPage extends React.Component {
|
|||||||
<Form.Item
|
<Form.Item
|
||||||
name="agreement"
|
name="agreement"
|
||||||
valuePropName="checked"
|
valuePropName="checked"
|
||||||
|
rules={[
|
||||||
|
{
|
||||||
|
required: required,
|
||||||
|
message: i18next.t("signup:Please accept the agreement!"),
|
||||||
|
},
|
||||||
|
]}
|
||||||
{...tailFormItemLayout}
|
{...tailFormItemLayout}
|
||||||
>
|
>
|
||||||
<Checkbox>
|
<Checkbox>
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
"Created time": "Created time",
|
"Created time": "Created time",
|
||||||
"Name": "Name",
|
"Name": "Name",
|
||||||
"Display name": "Display name",
|
"Display name": "Display name",
|
||||||
|
"Personal name": "Personal name",
|
||||||
"Avatar": "Avatar",
|
"Avatar": "Avatar",
|
||||||
"URL": "URL",
|
"URL": "URL",
|
||||||
"Preview": "Preview",
|
"Preview": "Preview",
|
||||||
@ -39,6 +40,7 @@
|
|||||||
{
|
{
|
||||||
"Username": "Username",
|
"Username": "Username",
|
||||||
"Please input your display name!": "Please input your display name!",
|
"Please input your display name!": "Please input your display name!",
|
||||||
|
"Please input your personal name!": "Please input your personal name!",
|
||||||
"Please input your address!": "Please input your address!",
|
"Please input your address!": "Please input your address!",
|
||||||
"Please input your affiliation!": "Please input your affiliation!",
|
"Please input your affiliation!": "Please input your affiliation!",
|
||||||
"The input is not valid Email!": "The input is not valid Email!",
|
"The input is not valid Email!": "The input is not valid Email!",
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
"Created time": "创建时间",
|
"Created time": "创建时间",
|
||||||
"Name": "名称",
|
"Name": "名称",
|
||||||
"Display name": "显示名称",
|
"Display name": "显示名称",
|
||||||
|
"Personal name": "姓名",
|
||||||
"Avatar": "头像",
|
"Avatar": "头像",
|
||||||
"URL": "链接",
|
"URL": "链接",
|
||||||
"Preview": "预览",
|
"Preview": "预览",
|
||||||
@ -38,7 +39,8 @@
|
|||||||
"signup":
|
"signup":
|
||||||
{
|
{
|
||||||
"Username": "用户名",
|
"Username": "用户名",
|
||||||
"Please input your display name!": "请输入您的姓名!",
|
"Please input your display name!": "请输入您的显示名称!",
|
||||||
|
"Please input your personal name!": "请输入您的姓名!",
|
||||||
"Please input your address!": "请输入您的地址!",
|
"Please input your address!": "请输入您的地址!",
|
||||||
"Please input your affiliation!": "请输入您所在的工作单位!",
|
"Please input your affiliation!": "请输入您所在的工作单位!",
|
||||||
"The input is not valid Email!": "您输入的电子邮箱格式错误!",
|
"The input is not valid Email!": "您输入的电子邮箱格式错误!",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user