import React, { useEffect, useState } from 'react'; import { Flex, Input, Form, Button, Card, Space, Image } from 'antd'; import { useNavigate } from 'react-router-dom'; import { NotifAlert } from '../../components/Global/ToastNotif'; import { SendRequest } from '../../components/Global/ApiRequest'; import bg_cod from 'assets/bg_cod.jpg'; import logo from 'assets/freepik/LOGOPIU.png'; const SignIn = () => { const [form] = Form.useForm(); const [captchaSvg, setCaptchaSvg] = useState(''); const [captchaText, setCaptchaText] = useState(''); const [loading, setLoading] = useState(false); const navigate = useNavigate(); const defaultSignIn = { identifier: 'superadmin@cod.com', password: '@Superadmin123', captcha: '', }; const moveToSignUp = () => { navigate('/signup'); }; // ambil captcha const fetchCaptcha = async () => { try { const res = await SendRequest({ method: 'get', prefix: 'auth/generate-captcha', token: false, }); setCaptchaSvg(res.data?.data?.svg || ''); setCaptchaText(res.data?.data?.text || ''); } catch (err) { console.error('Error fetching captcha:', err); } }; useEffect(() => { fetchCaptcha(); }, []); const handleOnSubmit = async (values) => { setLoading(true); try { const res = await SendRequest({ method: 'post', prefix: 'auth/login', params: { identifier: values.identifier, password: values.password, captcha: values.captcha, captchaText: captchaText, }, withCredentials: true, }); const user = res?.data?.data?.user || res?.user; const accessToken = res?.data?.data?.accessToken || res?.tokens?.accessToken; if (user && accessToken) { localStorage.setItem('token', accessToken); localStorage.setItem('user', JSON.stringify(user)); NotifAlert({ icon: 'success', title: 'Login Berhasil', message: res?.message || 'Selamat datang!', }); navigate('/dashboard/home'); } } catch (err) { // hanya handle invalid captcha disini if (err?.response?.data?.message?.toLowerCase().includes('captcha')) { NotifAlert({ icon: 'warning', title: 'Peringatan', message: 'Invalid captcha', }); fetchCaptcha(); } else { NotifAlert({ icon: 'error', title: 'Login Gagal', message: err?.message || 'Terjadi kesalahan', }); fetchCaptcha(); } } finally { setLoading(false); } }; return ( logo
); }; export default SignIn;