Improve signup page.

This commit is contained in:
Yang Luo 2021-06-16 15:25:54 +08:00
parent 02b1feb2e5
commit 3274bd0c7c
5 changed files with 72 additions and 48 deletions

View File

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

View File

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

View File

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

View File

@ -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!",

View File

@ -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!": "您输入的电子邮箱格式错误!",