import React, { Component } from "react"; import { Input, Card, CardBody, Button } from "reactstrap"; import Router from "next/router"; import FormValidator from "@/components/Forms/Validator.js"; import { connect } from "react-redux"; import { login, getUser } from "@/actions/auth"; import axiosAPI from "@/config/axios"; import { getPT } from "@/actions/PT"; class Login extends Component { constructor(props) { super(props); this.state = { /* Group each form state in an object. Property name MUST match the form name */ error: null, formLogin: { username: "", 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 = async (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) { const { username, password } = this.state.formLogin; const auth = await login(username, password); if (auth.success) { axiosAPI.defaults.headers.Authorization = `Bearer ${auth.access_token}`; const dataUser = await getUser(); this.props.setUser(dataUser.data); if (dataUser.data.peran[0].peran.id === 2022) { const org_id = dataUser.data.peran[0].organisasi.id; const pt = await getPT({ id: org_id }); if (pt?.success) { this.props.setPT(pt.data); } Router.push({ pathname: "/app/pt/pemantauan" }); } else { Router.push({ pathname: "/app/pemantauan" }); } } else { this.setState({ error: auth.message || auth.error }); } } // e.preventDefault(); }; /* 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 ( Logo {" "}
Sistem Informasi Pengendalian Kelembagaan Perguruan Tinggi pada Pendidikan Tinggi Akademik
{this.state.error}
{this.hasError("formLogin", "username", "required") && Field is required}
Field is required
* Required fields
Login Menggunakan Akun PDDIKTI
); } } const mapStateToProps = (state) => ({ user: state.user }); const mapDispatchToProps = (dispatch) => ({ setUser: (payload) => dispatch({ type: "SET_USER", payload }), setPT: (payload) => dispatch({ type: "SET_PT", payload }), }); export default connect(mapStateToProps, mapDispatchToProps)(Login);