"use client"; import React, { useState, useEffect } from "react"; import { Text, Button, TextInput, PasswordInput, Title, Card, Box, Image, Container, Grid, Progress } from "@mantine/core"; import { notifications } from "@mantine/notifications"; import { Providers } from "@/app/providers"; import { useRouter } from "next/navigation"; import NextImage from "next/image"; import logo from '@/app/image/logo1.jpg'; import forget_psw from '@/app/image/forget_password.jpg'; import { generateCaptcha } from '@/app/captcha'; import { IconLock, IconRefresh, IconShieldCheck } from '@tabler/icons-react'; export default function ForgetLoginPwd() { const router = useRouter(); const [authorized, setAuthorized] = useState(null); const [captcha, setCaptcha] = useState(""); const [password, setPassword] = useState(""); const [confirmPassword, setConfirmPassword] = useState(""); const [captchaInput, setCaptchaInput] = useState(''); const [captchaError, setCaptchaError] = useState(''); const icon = ; useEffect(() => { const loadCaptcha = async () => { const newCaptcha = await generateCaptcha(); setCaptcha(newCaptcha); }; loadCaptcha(); }, []); // Add this useEffect in your component useEffect(() => { // Check authorization on mount const token = localStorage.getItem("reset_pwd_token"); if (!token) { setAuthorized(false); router.push("/login"); return; } setAuthorized(true); // Handle back button navigation const handlePopState = () => { localStorage.removeItem("reset_pwd_token"); router.push("/login"); }; // Handle page refresh/reload const handleBeforeUnload = (e: BeforeUnloadEvent) => { localStorage.removeItem("reset_pwd_token"); }; // Add event listeners window.addEventListener('popstate', handlePopState); window.addEventListener('beforeunload', handleBeforeUnload); // Cleanup listeners on unmount return () => { window.removeEventListener('popstate', handlePopState); window.removeEventListener('beforeunload', handleBeforeUnload); }; }, [router]); useEffect(() => { const token = localStorage.getItem("reset_pwd_token"); if (!token) { setAuthorized(false); router.push("/login"); } else { setAuthorized(true); } }, [router]); const handleRefreshCaptcha = async () => { const newCaptcha = await generateCaptcha(); setCaptcha(newCaptcha); setCaptchaInput(''); setCaptchaError(''); }; const handleSetLoginPassword = async (e: React.FormEvent) => { e.preventDefault(); const pwdRegex = /^(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$/; if (captchaInput !== captcha) { setCaptchaError("Incorrect CAPTCHA. Please try again."); setCaptchaInput(''); return; } if (!password || !confirmPassword) { notifications.show({ withBorder: true, color: "red", title: "Required Fields", message: "Both password fields are required.", autoClose: 5000, }); return; } if (password !== confirmPassword) { notifications.show({ withBorder: true, color: "red", title: "Password Mismatch", message: "Passwords do not match.", autoClose: 5000, }); return; } if (!pwdRegex.test(password)) { notifications.show({ withBorder: true, color: "red", title: "Weak Password", message: "Password must contain at least 1 capital letter, 1 number, 1 special character, and be at least 8 characters long.", autoClose: 5000, }); return; } const token = localStorage.getItem("reset_pwd_token"); const response = await fetch('api/auth/login_password', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Login-Type': 'IB', 'Authorization': `Bearer ${token}` }, body: JSON.stringify({ login_password: password, }), }); const data = await response.json(); if (response.ok) { notifications.show({ withBorder: true, color: "green", title: "Success", message: "Login Password has been set successfully", autoClose: 5000, }); localStorage.removeItem("reset_pwd_token"); router.push("/login"); } else { notifications.show({ withBorder: true, color: "red", title: "Error", message: "Please try again later", autoClose: 5000, }); router.push("/login"); } }; if (authorized) { return ( {/* Header */} ebanking THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 {/* Image Column - Now visible on all screens */} Welcome to KCCB Internet Banking Experience secure, fast, and convenient banking at your fingertips {/* Form Column */} Set Login Password Create a strong password to secure your account setPassword(e.currentTarget.value)} onCopy={(e) => e.preventDefault()} onPaste={(e) => e.preventDefault()} onCut={(e) => e.preventDefault()} styles={{ input: { borderRadius: "8px", border: "2px solid #e9ecef" } }} /> setConfirmPassword(e.currentTarget.value)} onCopy={(e) => e.preventDefault()} onPaste={(e) => e.preventDefault()} onCut={(e) => e.preventDefault()} styles={{ input: { borderRadius: "8px", border: "2px solid #e9ecef" } }} /> {/* CAPTCHA Section */} Verification Code {captcha} { setCaptchaInput(e.currentTarget.value); setCaptchaError(''); }} required size="md" error={captchaError} styles={{ input: { borderRadius: "8px" } }} /> Password Requirements: • Minimum 8 characters
• At least 1 uppercase letter
• At least 1 number
• At least 1 special character (@$!%*#?&)
{/* Footer */} © 2025 Kangra Central Co-Operative Bank. All rights reserved.
); } }