"use client"; import { Input } from "@heroui/input"; import React, { useState } from "react"; import { EyeFilledIcon, EyeSlashFilledIcon } from "../icons"; import { Button } from "@heroui/button"; import Link from "next/link"; import Cookies from "js-cookie"; import { close, error, loading } from "@/config/swal"; import { checkUsernames, getProfile, otpRequest, otpValidation, postSignIn, } from "@/service/master-user"; import { useRouter } from "next/navigation"; import Swal from "sweetalert2"; import withReactContent from "sweetalert2-react-content"; import { saveActivity } from "@/service/activity-log"; import { Image } from "@heroui/react"; import { InputOtp } from "@heroui/input-otp"; import PasswordChecklist from "react-password-checklist"; export default function Login() { const router = useRouter(); const [isVisible, setIsVisible] = useState(false); const [isVisibleSetup, setIsVisibleSetup] = useState([false, false]); const [emailSetup, setEmailSetup] = useState(""); const [passwordSetup, setPasswordSetup] = useState(""); const [confPasswordSetup, setConfPasswordSetup] = useState(""); const toggleVisibility = () => setIsVisible(!isVisible); const [needOtp, setNeedOtp] = useState(false); const [isFirstLogin, setFirstLogin] = useState(false); const [otpValue, setOtpValue] = useState(""); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [accessData, setAccessData] = useState(); const [profile, setProfile] = useState(); const [isValidPassword, setIsValidPassword] = useState(false); const onSubmit = async () => { const data = { username: username, password: password, }; if (!username || !password) { error("Username & Password Wajib Diisi !"); } else { loading(); const response = await postSignIn(data); if (response?.error) { error("Username / Password Tidak Sesuai"); } else { setAccessData(response?.data?.data); const profile = await getProfile(response?.data?.data?.access_token); console.log("PROFILE : ", profile?.data?.data); // setEmailSetup(profile?.data?.data?.email); // setProfile(profile?.data?.data); // setFirstLogin(true); // if (profile?.data?.data?.isFirstLogin) { // setFirstLogin(true); // } else { // const res = await otpRequest( // profile?.data?.data?.email, // profile?.data?.data?.fullname // ); // setNeedOtp(true); // } const dateTime: any = new Date(); const newTime: any = dateTime.getTime() + 10 * 60 * 1000; Cookies.set("access_token", response?.data?.data?.access_token, { expires: 1, }); Cookies.set("refresh_token", response?.data?.data?.refresh_token, { expires: 1, }); Cookies.set("time_refresh", newTime, { expires: 1, }); Cookies.set("is_first_login", "true", { secure: true, sameSite: "strict", }); const resActivity = await saveActivity( { activityTypeId: 1, url: "https://kontenhumas.com/auth", userId: profile?.data?.data?.id, }, accessData?.id_token ); Cookies.set("profile_picture", profile?.data?.data?.profilePictureUrl, { expires: 1, }); Cookies.set("uie", profile?.data?.data?.id, { expires: 1, }); Cookies.set("ufne", profile?.data?.data?.fullname, { expires: 1, }); Cookies.set("ulie", profile?.data?.data?.userLevelGroup, { expires: 1, }); Cookies.set("username", profile?.data?.data?.username, { expires: 1, }); Cookies.set("urie", profile?.data?.data?.roleId, { expires: 1, }); Cookies.set("roleName", profile?.data?.data?.roleName, { expires: 1, }); Cookies.set("masterPoldaId", profile?.data?.data?.masterPoldaId, { expires: 1, }); Cookies.set("ulne", profile?.data?.data?.userLevelId, { expires: 1, }); Cookies.set("urce", profile?.data?.data?.roleCode, { expires: 1, }); Cookies.set("email", profile?.data?.data?.email, { expires: 1, }); router.push("/admin/dashboard"); Cookies.set("status", "login", { expires: 1, }); close(); } } // } }; const setValUsername = (e: any) => { const uname = e.replaceAll(/[^\w.-]/g, ""); setUsername(uname.toLowerCase()); }; const [isResetPassword, setIsResetPassword] = useState(false); const [checkUsernameValue, setCheckUsernameValue] = useState(""); const MySwal = withReactContent(Swal); const checkUsername = async () => { const res = await checkUsernames(checkUsernameValue); if (res?.error) { error("Username tidak ditemukan"); return false; } MySwal.fire({ title: "", text: "", html: ( <>

Kami telah mengirimkan tautan untuk mengatur ulang kata sandi ke email Anda

Apakah Anda sudah menerima emailnya? Jika belum, periksa folder spam Anda

), icon: "info", cancelButtonColor: "#d33", confirmButtonColor: "#3085d6", confirmButtonText: "Oke", }).then((result) => { if (result.isConfirmed) { } }); }; const submitOtp = async () => { loading(); const validation = await otpValidation(profile?.email, otpValue); if (validation?.error) { error("OTP Tidak Sesuai"); return false; } const dateTime: any = new Date(); const newTime: any = dateTime.getTime() + 10 * 60 * 1000; Cookies.set("access_token", accessData?.access_token, { expires: 1, }); Cookies.set("refresh_token", accessData?.refresh_token, { expires: 1, }); Cookies.set("time_refresh", newTime, { expires: 1, }); Cookies.set("is_first_login", "true", { secure: true, sameSite: "strict", }); const resActivity = await saveActivity( { activityTypeId: 1, url: "https://kontenhumas.com/auth", userId: profile?.data?.data?.id, }, accessData?.id_token ); Cookies.set("profile_picture", profile?.profilePictureUrl, { expires: 1, }); Cookies.set("uie", profile?.id, { expires: 1, }); Cookies.set("ufne", profile?.fullname, { expires: 1, }); Cookies.set("ulie", profile?.userLevelGroup, { expires: 1, }); Cookies.set("username", profile?.username, { expires: 1, }); Cookies.set("urie", profile?.roleId, { expires: 1, }); Cookies.set("roleName", profile?.roleName, { expires: 1, }); Cookies.set("masterPoldaId", profile?.masterPoldaId, { expires: 1, }); Cookies.set("ulne", profile?.userLevelId, { expires: 1, }); Cookies.set("urce", profile?.roleCode, { expires: 1, }); Cookies.set("email", profile?.email, { expires: 1, }); router.push("/admin/dashboard"); Cookies.set("status", "login", { expires: 1, }); close(); }; const generatePassword = () => { const length = Math.floor(Math.random() * 9) + 8; const upperCaseChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; const lowerCaseChars = "abcdefghijklmnopqrstuvwxyz"; const numberChars = "0123456789"; const specialChars = "!@#$%^&*"; const allChars = upperCaseChars + lowerCaseChars + numberChars + specialChars; let generatedPassword = ""; generatedPassword += upperCaseChars[Math.floor(Math.random() * upperCaseChars.length)]; generatedPassword += specialChars[Math.floor(Math.random() * specialChars.length)]; generatedPassword += numberChars[Math.floor(Math.random() * numberChars.length)]; generatedPassword += lowerCaseChars[Math.floor(Math.random() * lowerCaseChars.length)]; for (let i = generatedPassword.length; i < length; i++) { generatedPassword += allChars[Math.floor(Math.random() * allChars.length)]; } generatedPassword = generatedPassword .split("") .sort(() => 0.5 - Math.random()) .join(""); setPasswordSetup(generatedPassword); }; return (
login-image icon
{isFirstLogin ? (

Setting Account

Email

Password Baru

setIsVisibleSetup([!isVisibleSetup[0], isVisibleSetup[1]]) } > {isVisibleSetup[0] ? ( ) : ( )} } type={isVisibleSetup[0] ? "text" : "password"} label="" placeholder="" value={passwordSetup} onValueChange={setPasswordSetup} />

Konfirmasi Password Baru

setIsVisibleSetup([isVisibleSetup[0], !isVisibleSetup[1]]) } > {isVisibleSetup[1] ? ( ) : ( )} } type={isVisibleSetup[1] ? "text" : "password"} label="" placeholder="" value={confPasswordSetup} onValueChange={setConfPasswordSetup} /> Generate Password { setIsValidPassword(isValid); }} className="text-white text-sm my-3" messages={{ minLength: "Kata sandi harus lebih dari 8 karakter", specialChar: "Kata sandi harus mengandung karakter khusus", number: "Kata sandi harus mengandung angka", capital: "Kata sandi harus mengandung huruf kapital", match: "Kata sandi cocok", }} />
) : needOtp ? (

Login

OTP

Beranda
) : isResetPassword ? (

Reset Password

Username

{ setCheckUsernameValue(e.target.value.trim()); }} onPaste={(e: any) => { setCheckUsernameValue(e.target.value.trim()); }} onCopy={(e: any) => { setCheckUsernameValue(e.target.value.trim()); }} />
Beranda setIsResetPassword(false)} > Login
) : (

Login

Username

{ setValUsername(e.target.value.trim()); }} onPaste={(e: any) => { setValUsername(e.target.value.trim()); }} onCopy={(e: any) => { setValUsername(e.target.value.trim()); }} />

Password

{isVisible ? ( ) : ( )} } type={isVisible ? "text" : "password"} label="" placeholder="" onChange={(event) => setPassword(event.target.value)} />
)}
); }