diff --git a/packages/app/src/components/Login/index.jsx b/packages/app/src/components/Login/index.jsx new file mode 100644 index 00000000..6b8ef895 --- /dev/null +++ b/packages/app/src/components/Login/index.jsx @@ -0,0 +1,132 @@ +import React from "react" +import * as antd from "antd" +import { FormGenerator } from "components" +import { Icons } from "components/Icons" + +import config from "config" + +import "./index.less" + +const formInstance = [ + { + id: "username", + element: { + component: "Input", + icon: "User", + placeholder: "Username", + props: { + autoCorrect: "off", + autoCapitalize: "none", + className: "login-form-username", + }, + }, + item: { + hasFeedback: true, + rules: [ + { + required: true, + message: 'Please input your Username!', + }, + ], + } + }, + { + id: "password", + element: { + component: "Input", + icon: "Lock", + placeholder: "Password", + props: { + type: "password" + } + }, + item: { + hasFeedback: true, + rules: [ + { + required: true, + message: 'Please input your Password!', + }, + ], + } + }, + { + id: "login_btn", + withValidation: true, + element: { + component: "Button", + props: { + icon: "User", + children: "Login", + type: "primary", + htmlType: "submit" + } + } + }, +] + +export default class Login extends React.Component { + static pageStatement = { + bottomBarAllowed: false + } + + handleFinish = async (values, ctx) => { + ctx.toogleValidation(true) + + const payload = { + username: values.username, + password: values.password, + allowRegenerate: values.allowRegenerate, + } + + this.props.sessionController.login(payload, (error, response) => { + ctx.toogleValidation(false) + ctx.clearErrors() + + if (error) { + ctx.shake("all") + return ctx.error("result", error) + } else { + if (response.status === 200) { + this.onDone() + } + } + }) + } + + onDone = () => { + if (typeof this.props.onDone === "function") { + this.props.onDone() + } + + if (typeof this.props.close === "function") { + this.props.close() + } + } + + render() { + return ( +