From f99e0aba70efad0deb907d8e27f09fc9f527c8a4 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 17 Feb 2023 17:07:50 +0700 Subject: Refactor --- src2/pages/login.js | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 src2/pages/login.js (limited to 'src2/pages/login.js') diff --git a/src2/pages/login.js b/src2/pages/login.js new file mode 100644 index 00000000..e80de44e --- /dev/null +++ b/src2/pages/login.js @@ -0,0 +1,97 @@ +import axios from "axios"; +import Head from "next/head"; +import Image from "next/image"; +import Link from "@/components/elements/Link"; +import { useRouter } from "next/router"; +import { useEffect, useState } from "react"; +import Alert from "@/components/elements/Alert"; +import Layout from "@/components/layouts/Layout"; +import Spinner from "@/components/elements/Spinner"; +import { setAuth } from "@/core/utils/auth"; +import Logo from "@/images/logo.png"; + +export default function Login() { + const router = useRouter(); + const [email, setEmail] = useState(''); + const [password, setPassword] = useState(''); + const [isInputFulfilled, setIsInputFulfilled] = useState(false); + const [isLoading, setIsLoading] = useState(false); + const [alert, setAlert] = useState(); + + useEffect(() => { + setIsInputFulfilled(email && password); + }, [email, password]); + + const login = async (e) => { + e.preventDefault(); + setIsLoading(true); + let login = await axios.post(`${process.env.SELF_HOST}/api/login`, {email, password}); + if (login.data.is_auth) { + setAuth(login.data.user); + router.push('/'); + } else { + switch (login.data.reason) { + case 'NOT_FOUND': + setAlert({ + component: <>Email atau password tidak cocok, + type: 'info' + }); + break; + case 'NOT_ACTIVE': + setAlert({ + component: <>Email belum diaktivasi, aktivasi sekarang, + type: 'info' + }); + break; + } + setIsLoading(false); + } + } + + return ( + <> + + Masuk - Indoteknik + + + + Logo Indoteknik + +

Mulai Belanja Sekarang

+

Masuk ke akun kamu untuk belanja

+ {alert ? ( + {alert.component} + ) : ''} +
+ + setEmail(e.target.value)} + /> + + setPassword(e.target.value)} + /> +
+ Lupa kata sandi +
+ +
+

Belum punya akun Indoteknik? Daftar

+
+ + ) +} \ No newline at end of file -- cgit v1.2.3