| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- // import React, { Component,useState } from 'react';
- import React, { Component} from 'react';
- import BasePage from '@/components/Layout/BasePage';
- import Link from 'next/link';
- import { Input, CustomInput } from 'reactstrap';
- import * as actions from '../store/actions/actions';
- import FormValidator from '@/components/Forms/Validator.js';
- import { dispatch } from 'd3';
- import Router, { withRouter } from 'next/router'
- // import useUser from '../lib/useUser';
- // import fetchJson from '../lib/fetchJson';
- const year = new Date().getFullYear()
- class Login extends Component {
- // mutateUser = useUser({
- // redirectTo: '/profile-sg',
- // redirectIfFound: true,
- // })
- // [errorMsg, setErrorMsg] = useState('')
- state = {
- formLogin: {
- uname: '',
- password: ''
- }
- }
- /**
- * Validate input using onChange event
- * @param {String} formName The name of the form in the state object
- * @return {Function} a function used for the event
- */
- validateOnChange = event => {
- const input = event.target;
- const form = input.form
- const value = input.type === 'checkbox' ? input.checked : input.value;
- const result = FormValidator.validate(input);
- this.setState({
- [form.name]: {
- ...this.state[form.name],
- [input.name]: value,
- errors: {
- ...this.state[form.name].errors,
- [input.name]: result
- }
- }
- });
- }
- onSubmit(e) {
- const form = e.target;
- const inputs = [...form.elements].filter(i => ['INPUT', 'SELECT'].includes(i.nodeName))
- const { errors, hasError } = FormValidator.bulkValidate(inputs)
- this.setState({
- [form.name]: {
- ...this.state[form.name],
- errors
- }
- });
- console.log(hasError ? 'Form has errors. Check!' : 'Form Submitted!');
- e.preventDefault();
- if (!hasError) {
- //this.props.logged('signin')
- //Router.push('/singleview');
- // const body = {
- // username: this.state.formLogin.uname,
- // password: this.state.formLogin.password
- // }
- // try {
- // mutateUser(
- // await fetchJson('/api/login', {
- // method: 'POST',
- // headers: { 'Content-Type': 'application/json' },
- // body: JSON.stringify(body),
- // })
- // )
- // } catch (error) {
- // console.error('An unexpected error happened:', error)
- // setErrorMsg(error.data.message)
- // }
-
- //main route
- Router.push('/app/projects');
- };
- }
- /* Simplify error check */
- hasError = (formName, inputName, method) => {
- return this.state[formName] &&
- this.state[formName].errors &&
- this.state[formName].errors[inputName] &&
- this.state[formName].errors[inputName][method]
- }
- render() {
- return (
- <div className="block-center mt-4 wd-xl">
- <div className="card card-flat">
- {/* <div className="card-header text-center bg-white">
- <a href="">
- <img className="block-center " src="/static/img/logo.png" alt="Logo"/>
- </a>
- </div> */}
- <img class="card-img-top" src="/static/img/logo.png" alt="Logo"></img>
- <div className="card-body">
- <h5 class="card-title text-center py-2 bg-gray">Aplikasi Perguruan Tinggi Bermasalah </h5>
- {/* <p className="text-center py-2">Aplikasi Perguruan Tinggi Bermasalah </p> */}
- <form className="mb-3" name="formLogin" onSubmit={this.onSubmit}>
- <div className="form-group">
- <div className="input-group with-focus">
- {/* <Input type="email"
- name="email"
- className="border-right-0"
- placeholder="Enter username"
- invalid={this.hasError('formLogin','email','required')||this.hasError('formLogin','email','email')}
- onChange={this.validateOnChange}
- data-validate='["required", "email"]'
- value={this.state.formLogin.email}/> */}
- <Input placeholder="Enter User Name"
- name="uname"
- className="border-right-0"
- invalid={this.hasError('formLogin','uname','required')}
- onChange={this.validateOnChange}
- data-validate='["required"]'
- value={this.state.formLogin.uname}
- />
- <div className="input-group-append">
- <span className="input-group-text text-muted bg-transparent border-left-0">
- <em className="fa fa-user"></em>
- </span>
- </div>
- { this.hasError('formLogin','uname','required') && <span className="invalid-feedback">Field is required</span> }
- {/* { this.hasError('formLogin','email','email') && <span className="invalid-feedback">Field must be valid email</span> } */}
- </div>
- </div>
- <div className="form-group">
- <div className="input-group with-focus">
- <Input type="password"
- id="id-password"
- name="password"
- className="border-right-0"
- placeholder="Password"
- invalid={this.hasError('formLogin','password','required')}
- onChange={this.validateOnChange}
- data-validate='["required"]'
- value={this.state.formLogin.password}
- />
- <div className="input-group-append">
- <span className="input-group-text text-muted bg-transparent border-left-0">
- <em className="fa fa-lock"></em>
- </span>
- </div>
- <span className="invalid-feedback">Field is required</span>
- </div>
- </div>
- {/* <div className="clearfix">
- <CustomInput type="checkbox" id="rememberme"
- className="float-left mt-0"
- name="remember"
- label="Remember Me">
- </CustomInput>
- <div className="float-right">
- <Link href="/pages/recover" as="/recover"><a className="text-muted"> </a></Link>
- </div>
- </div> */}
- <button className="btn btn-block btn-primary mt-3" type="submit">Login</button>
- </form>
- </div>
- </div>
- <div className="p-3 text-center">
- {/* <span className="mr-2">©</span> */}
- <span>© {year} - Dikti</span>
- {/* <span className="mx-2">-</span>
- <span>Dikti</span> */}
- <br/>
- <span> </span>
- </div>
- </div>
- );
- }
- }
- Login.Layout = BasePage;
- export default Login;
|