diff --git a/src/app/ForgetPassword/page.tsx b/src/app/ForgetPassword/page.tsx index 8d52422..3e81f0c 100644 --- a/src/app/ForgetPassword/page.tsx +++ b/src/app/ForgetPassword/page.tsx @@ -1,91 +1,126 @@ "use client"; import React, { useState, useEffect } from "react"; -import { Text, Button, TextInput, PasswordInput, Title, Card, Box, Image } from "@mantine/core"; +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/logo.jpg'; -import changePwdImage from '@/app/image/changepw.png'; -// import CaptchaImage from './CaptchaImage'; -import { IconEye, IconEyeOff, IconLock, IconLogout } from '@tabler/icons-react'; +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 [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 [confirmVisible, setConfirmVisible] = useState(false); - const toggleConfirmVisibility = () => setConfirmVisible((v) => !v); const icon = ; - async function handleLogout(e: React.FormEvent) { - e.preventDefault(); - localStorage.removeItem("access_token"); - sessionStorage.removeItem("access_token") - localStorage.clear(); - sessionStorage.clear(); - router.push("/login") - } - useEffect(() => { - generateCaptcha(); + const loadCaptcha = async () => { + const newCaptcha = await generateCaptcha(); + setCaptcha(newCaptcha); + }; + loadCaptcha(); }, []); - const generateCaptcha = () => { - const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - let result = ''; - for (let i = 0; i < 6; i++) { - result += chars.charAt(Math.floor(Math.random() * chars.length)); + // 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; } - setCaptcha(result); + 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(''); }; - async function handleSetLoginPassword(e: React.FormEvent) { + 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: "Both password fields are required.", + title: "Required Fields", message: "Both password fields are required.", autoClose: 5000, }); return; - // alert("Both password fields are required."); - } else if (password !== confirmPassword) { - // alert("Passwords do not match."); + } + + if (password !== confirmPassword) { notifications.show({ withBorder: true, color: "red", - title: "Passwords do not match.", + title: "Password Mismatch", message: "Passwords do not match.", autoClose: 5000, }); return; } - else if (!pwdRegex.test(password)) { - // alert("Password must contain at least 1 capital letter, 1 number, 1 special character, and be at least 8 characters long."); + + if (!pwdRegex.test(password)) { notifications.show({ withBorder: true, color: "red", - title: "Password must contain at least 1 capital letter, 1 number, 1 special character, and be at least 8 characters long.", + 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; } - else if (captchaInput !== captcha) { - setCaptchaError("Incorrect CAPTCHA."); - return; - } - const token = localStorage.getItem("access_token"); + + const token = localStorage.getItem("reset_pwd_token"); const response = await fetch('api/auth/login_password', { method: 'POST', headers: { @@ -97,174 +132,305 @@ export default function ForgetLoginPwd() { login_password: password, }), }); + const data = await response.json(); if (response.ok) { - // console.log(data); notifications.show({ withBorder: true, color: "green", - title: "Login Password has been set", - message: "Login Password has been set", + title: "Success", + message: "Login Password has been set successfully", autoClose: 5000, }); - router.push("/SetTxn"); - } - else { + localStorage.removeItem("reset_pwd_token"); + router.push("/login"); + } else { notifications.show({ withBorder: true, color: "red", - title: "Please try again later ", - message: "Please try again later ", + title: "Error", + message: "Please try again later", autoClose: 5000, }); router.push("/login"); } - } + }; - // useEffect(() => { - // const token = localStorage.getItem("access_token"); - // if (!token) { - // SetAuthorized(false); - // router.push("/login"); - // } - // else { - // SetAuthorized(true); - // } - // }, []); - - // if (authorized) { + if (authorized) { return ( -
- + + {/* Header */} + ebanking - + + + THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. + + + Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 + + -
- - Change Password Image - - - Set Login Password -
- setPassword(e.currentTarget.value)} - onCopy={(e) => e.preventDefault()} - onPaste={(e) => e.preventDefault()} - onCut={(e) => e.preventDefault()} - /> + + + + {/* Image Column - Now visible on all screens */} + + + + + Welcome to KCCB Internet Banking + + + Experience secure, fast, and convenient banking at your fingertips + + + + - setConfirmPassword(e.currentTarget.value)} - type={confirmVisible ? 'text' : 'password'} - // rightSection={ - // - // } - onCopy={(e) => e.preventDefault()} - onPaste={(e) => e.preventDefault()} - onCut={(e) => e.preventDefault()} + {/* Form Column */} + + + - /> + + Set Login Password + + + Create a strong password to secure your account + + - {/* CAPTCHA */} -
- -
- {/* */} - -
- setCaptchaInput(e.currentTarget.value)} + + setPassword(e.currentTarget.value)} + onCopy={(e) => e.preventDefault()} + onPaste={(e) => e.preventDefault()} + onCut={(e) => e.preventDefault()} + styles={{ + input: { + borderRadius: "8px", + border: "2px solid #e9ecef" + } + }} /> - {captchaError &&

{captchaError}

} -
+
+ + + 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" + } + }} + /> + - -

- - - Note: Password will contains minimum one alphabet, one digit, one special symbol and total 8 charecters. - - -
-
-
- - - © 2025 Kangra Central Co-Operative Bank - - -
-
-
+ + + 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. + + + + ); - // } + } } \ No newline at end of file diff --git a/src/app/ValidateUser/page.module.css b/src/app/ValidateUser/page.module.css deleted file mode 100644 index ffc368f..0000000 --- a/src/app/ValidateUser/page.module.css +++ /dev/null @@ -1,74 +0,0 @@ -.header { - position: fixed; - top: 0; - left: 0; - width: 100%; - z-index: 100; - display: flex; - align-items: center; - justify-content: space-between; - padding: 0.8rem 2rem; - background: linear-gradient( - 15deg, - rgba(10, 114, 40, 1) 55%, - rgba(101, 101, 184, 1) 100% - ); - flex-wrap: wrap; -} - -.headerLogo { - width: 60px; -} - -.headerText { - display: flex; - flex-direction: column; - flex: 1; -} - -.desktopText { - color: white; - font-family: Roboto, sans-serif; - font-size: 1.5rem; - line-height: 1.2; -} - -.desktopAddress { - font-family: Roboto, sans-serif; - color: white; - font-size: 0.9rem; - margin-top: 0.25rem; -} - -.mobileText { - display: none; - color: white; - font-family: Roboto, sans-serif; - font-size: 0.9rem; - text-align: center; -} - -@media screen and (max-width: 768px) { - .header { - justify-content: center; - padding: 0.5rem 0.75rem; - } - - .headerLogo { - width: 50px; - margin-bottom: 0.5rem; - } - - .headerText { - text-align: center; - } - - .desktopText, - .desktopAddress { - display: none; - } - - .mobileText { - display: block; - } -} diff --git a/src/app/ValidateUser/page.tsx b/src/app/ValidateUser/page.tsx index 56fb9db..d9c78a9 100644 --- a/src/app/ValidateUser/page.tsx +++ b/src/app/ValidateUser/page.tsx @@ -1,13 +1,13 @@ "use client"; -import React, { useEffect, useState, useRef } from "react"; -import { Text, Button, TextInput, PasswordInput, Title, Card, Box, Image } from "@mantine/core"; +import React, { useState } from "react"; +import { Text, Button, TextInput, PasswordInput, Title, Card, Box, Image, Container, Grid, Stack, Divider, Badge } from "@mantine/core"; import { notifications } from "@mantine/notifications"; import { Providers } from "@/app/providers"; import NextImage from "next/image"; import logo from '@/app/image/logo1.jpg'; -import changePwdImage from '@/app/image/changepw.png'; +import ValidateUserId from '@/app/image/validate_page.jpg'; import { useRouter } from "next/navigation"; - +import { IconShieldCheck, IconPhone, IconKey } from '@tabler/icons-react'; export default function ValidateUser() { const router = useRouter(); @@ -15,228 +15,456 @@ export default function ValidateUser() { const [otp, setOTP] = useState(""); const [mobileNumber, setMobileNumber] = useState(""); const [isCifValidated, setIsCifValidated] = useState(false); - const [generateOtp, setGenerateOtp] = useState(""); - const headerRef = useRef(null); + const [loading, setLoading] = useState(false); - const validUsers = [ - { cif: "11111111111", mobile: "7890544528" }, - { cif: "30022497139", mobile: "6230573848" }, - { cif: "11122233344", mobile: "9998887776" }, - ]; - async function handleGenerateOtp() { - const value = "123456"; - setGenerateOtp(value); - return value; - } - - const handleValidateUser = async (e: React.FormEvent) => { - e.preventDefault(); - if (!Cif) { - notifications.show({ - title: "Invalid CIF", - message: "Please Enter your 11 digit CIF number.", - color: "red", - }); - setIsCifValidated(false); - return; - } + const handleValidateUser = async () => { if (!/^\d{11}$/.test(Cif)) { notifications.show({ title: "Invalid CIF", message: "CIF number must be exactly 11 digits.", color: "red", }); - setIsCifValidated(false); return; } - const user = validUsers.find((u) => u.cif === Cif); - if (user) { - setMobileNumber(user.mobile); + setLoading(true); + + try { + const res = await fetch( + `/api/otp/send/set-password?customerNo=${Cif}`, + { + method: "GET", + headers: { + "Content-Type": "application/json", + "X-Login-Type": "IB", + }, + } + ); + + const data = await res.json(); + + if (!res.ok) { + throw new Error(data?.message || "OTP send failed"); + } + setIsCifValidated(true); - const Otp = await handleGenerateOtp(); - const masked = `xxxxxx${user.mobile.slice(-4)}`; + setMobileNumber(data?.mobileNo || ""); + + const masked = data?.mobileNo + // ? `xxxxxx${data.mobileNo.slice(-4)}` + ? "registered number" + : "registered number"; + notifications.show({ title: "OTP Sent", - message: `OTP sent to your registered mobile number ${masked}`, + message: `OTP sent to ${masked}`, color: "green", }); - } else { - setIsCifValidated(false); + + } catch (err) { + console.error("Validation error:", err); notifications.show({ - title: "User Not Found", - message: "No such user is present.", + title: "Validation Failed", + message: err instanceof Error ? err.message : "Unable to send OTP. Please try again.", color: "red", }); + } finally { + setLoading(false); } }; - const handleSubmitOtp = () => { - if (!otp) { + const handleSubmitOtp = async () => { + if (!otp || otp.length !== 6) { notifications.show({ title: "Invalid OTP", - message: "Please Enter OTP Before You Submit.", + message: "Please enter 6 digit OTP.", color: "red", }); return; } - if (otp === generateOtp) { + + setLoading(true); + + try { + const res = await fetch( + `/api/otp/verify/set-password?customerNo=${Cif}&otp=${otp}`, + { + method: "GET", + headers: { + "Content-Type": "application/json", + "X-Login-Type": "IB", + }, + } + ); + + const data = await res.json(); + // console.log(data); + + if (!res.ok) { + throw new Error(data?.message || "OTP verification failed"); + } + + if (data?.token) { + localStorage.setItem("reset_pwd_token", data.token); + } else { + throw new Error("Token not received from server"); + } + notifications.show({ title: "OTP Verified", - message: `OTP matched successfully`, + message: "OTP verified successfully.", color: "green", }); - router.push("/ForgetPassword") - } - else { - setOTP(""); + + router.push("/ForgetPassword"); + + } catch (err) { + console.error("OTP verification error:", err); notifications.show({ title: "Invalid OTP", - message: `The OTP you entered is incorrect`, + message: err instanceof Error ? err.message : "OTP verification failed.", color: "red", }); - return; + setOTP(""); + } finally { + setLoading(false); } + }; - } - - useEffect(() => { - const headerData = [ - "THE KANGRA CENTRAL CO-OPERATIVE BANK LTD.", - "कांगड़ा केन्द्रीय सहकारी बैंक सीमित", - ]; - let index = 0; - const interval = setInterval(() => { - index = (index + 1) % headerData.length; - if (headerRef.current) { - headerRef.current.textContent = headerData[index]; - } - }, 2000); - return () => clearInterval(interval); - }, []); + const handleSubmit = () => { + if (isCifValidated) { + handleSubmitOtp(); + } else { + handleValidateUser(); + } + }; return ( -
+ + {/* Header */} ebanking - - THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. - - - - Change Password Image - - - {/* @ts-ignore */} - Validate User - - {isCifValidated && ( - // @ts-ignore - Welcome {" "}{Cif} - )} -
{ - e.preventDefault(); - isCifValidated ? handleSubmitOtp() : handleValidateUser(e); + /> + + - <TextInput - label="Enter Your CIF Number" - placeholder="Enter your CIF" - withAsterisk - value={Cif} - disabled={isCifValidated} - onChange={(e) => { - const input = e.currentTarget.value; - if (input.length <= 11) { - setCif(input); - } - }} - onKeyDown={(e) => { - const isNumberKey = /[0-9]/.test(e.key); - const isControlKey = ["Backspace", "Tab", "ArrowLeft", "ArrowRight"].includes(e.key); - if (!isNumberKey && !isControlKey) { - e.preventDefault(); - } - }} - /> - - <div style={{ marginTop: "1rem", minHeight: "80px" }}> - {!isCifValidated && ( - <> - <br></br> - <Text fs="italic" c="dimmed">NOTE: Your CIF number travels in an encrypted and highly secured mode.</Text> - </> - )} - {isCifValidated && ( - <> - <PasswordInput - label="Enter OTP" - placeholder="Enter your OTP" - withAsterisk - value={otp} - maxLength={6} - onKeyDown={(e) => { - const isNumberKey = /[0-9]/.test(e.key); - const isControlKey = ["Backspace", "Tab", "ArrowLeft", "ArrowRight"].includes(e.key); - if (!isNumberKey && !isControlKey) { - e.preventDefault(); - } - }} - onChange={(e) => setOTP(e.currentTarget.value)} - /> - <Text size="xs" mt="xs" c='green'> - OTP sent to your registered mobile number{" "} - <b>{`xxxxxx${mobileNumber.slice(-4)}`}</b> - </Text> - </> - )} - </div> - - <Button type="submit" mt="lg" color="blue"> - {isCifValidated ? "Submit OTP" : "Validate"} - </Button> - </form> - </Card> + THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. + + + Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 + + + {/* Main Content */} + + + + {/* Image Column - Hidden on mobile */} + + + + + Welcome to KCCB Internet Banking + + + Experience secure, fast, and convenient banking at your fingertips + + + + + + {/* Form Column */} + + + + {/* Header Section */} + + {/* + + */} + + Validate User + + + Secure access to your KCCB Internet Banking + + + + + + {/* Welcome Message */} + {isCifValidated && ( + + Welcome + {Cif} + + )} + + {/* Form Fields */} + + } + styles={{ + input: { + borderRadius: "12px", + border: "2px solid #e0e0e0", + fontSize: "1rem", + padding: "1.5rem 1rem 1.5rem 2.5rem", + transition: "all 0.3s ease", + '&:focus': { + borderColor: "#0a7228", + boxShadow: "0 0 0 3px rgba(10, 114, 40, 0.1)" + } + } + }} + onChange={(e) => { + const value = e.currentTarget.value; + if (value.length <= 11 && /^\d*$/.test(value)) { + setCif(value); + } + }} + onKeyDown={(e) => { + if (e.key === 'Enter') { + e.preventDefault(); + handleSubmit(); + } + }} + /> + + {!isCifValidated && ( + + + 🔒 Your CIF is transmitted securely using encrypted channels + + + )} + + {isCifValidated && ( + <> + } + styles={{ + input: { + borderRadius: "12px", + border: "2px solid #e0e0e0", + fontSize: "1rem", + padding: "1.5rem 1rem 1.5rem 2.5rem", + transition: "all 0.3s ease", + letterSpacing: "3px", + '&:focus': { + borderColor: "#0a7228", + boxShadow: "0 0 0 3px rgba(10, 114, 40, 0.1)" + } + } + }} + onChange={(e) => { + const value = e.currentTarget.value; + if (/^\d*$/.test(value)) { + setOTP(value); + } + }} + onKeyDown={(e) => { + if (e.key === 'Enter') { + e.preventDefault(); + handleSubmit(); + } + }} + /> + + + {/* 📱 OTP sent to {`xxxxxx${mobileNumber.slice(-4)}`} */} + 📱 OTP sent to Registered Mobile Number + + + + )} + + + + + {/* Security Note */} + + + Having trouble? Contact our support team + + + + + + + + + + {/* Footer */} © 2025 Kangra Central Co-Operative Bank -
+
); -} +} \ No newline at end of file diff --git a/src/app/_components/report/Activeuser_report.tsx b/src/app/_components/report/Activeuser_report.tsx index 099c7c5..909c917 100644 --- a/src/app/_components/report/Activeuser_report.tsx +++ b/src/app/_components/report/Activeuser_report.tsx @@ -30,7 +30,7 @@ export const generateActiveUsersPDF = (reportData: any, startDate: string, endDa
- Bank Logo + Bank Logo

The Kangra Central Co Operative Bank

diff --git a/src/app/_components/report/Inactiveuser_report.tsx b/src/app/_components/report/Inactiveuser_report.tsx index f2738ae..a5b2bda 100644 --- a/src/app/_components/report/Inactiveuser_report.tsx +++ b/src/app/_components/report/Inactiveuser_report.tsx @@ -38,7 +38,7 @@ export const generateInactiveUsersPDF = (
- Bank Logo + Bank Logo

The Kangra Central Co Operative Bank

diff --git a/src/app/_components/statement_download/PdfGenerator.tsx b/src/app/_components/statement_download/PdfGenerator.tsx index ea88cc2..84cb807 100644 --- a/src/app/_components/statement_download/PdfGenerator.tsx +++ b/src/app/_components/statement_download/PdfGenerator.tsx @@ -77,7 +77,7 @@ export const generatePDF = ( padding-bottom:12px; margin-bottom:15px; "> - +

THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. diff --git a/src/app/image/ebanking.jpg b/src/app/image/ebanking.jpg deleted file mode 100644 index 1886f42..0000000 Binary files a/src/app/image/ebanking.jpg and /dev/null differ diff --git a/src/app/image/forget_password.jpg b/src/app/image/forget_password.jpg new file mode 100644 index 0000000..0e05043 Binary files /dev/null and b/src/app/image/forget_password.jpg differ diff --git a/src/app/image/ib_front_3.jpg b/src/app/image/ib_front_3.jpg index e9d5ea0..c2223b9 100644 Binary files a/src/app/image/ib_front_3.jpg and b/src/app/image/ib_front_3.jpg differ diff --git a/src/app/image/validate_page.jpg b/src/app/image/validate_page.jpg new file mode 100644 index 0000000..177e9c8 Binary files /dev/null and b/src/app/image/validate_page.jpg differ diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 1787927..c2678db 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -11,7 +11,7 @@ import logo from '@/app/image/logo1.jpg'; import frontPage from '@/app/image/ib_front_3.jpg'; import dynamic from 'next/dynamic'; import { generateCaptcha } from '@/app/captcha'; -import { IconRefresh, IconShieldLockFilled } from "@tabler/icons-react"; +import { IconAlertCircle, IconLock, IconPhone, IconRefresh, IconShieldLockFilled, IconUser } from "@tabler/icons-react"; import dayjs from "dayjs"; import { fetchAndStoreUserName } from "../_util/userdetails"; @@ -470,7 +470,7 @@ export default function Login() { style={{ width: "60px", height: "auto" }} />
- + <Title order={3} ref={headerRef} style={{ fontFamily: "Roboto", color: "white", marginBottom: 2 }}> THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. @@ -479,17 +479,16 @@ export default function Login() {
- - -
+
{/* Movable text */} -
+ ebanking -
+
+ {/* + Internet Banking Login + */} } value={CIF} onInput={(e) => { // const input = e.currentTarget.value.replace(/\D/g, ""); @@ -576,6 +579,7 @@ export default function Login() { } value={psw} onChange={(e) => SetPsw(e.currentTarget.value)} withAsterisk @@ -584,32 +588,49 @@ export default function Login() { readOnly={isLogging} // mt="sm" /> - - {/* + router.push("/ValidateUser")} > Forgot Password? - */} + e.preventDefault()} onContextMenu={(e) => e.preventDefault()} > {captcha} - - + setInputCaptcha(e.currentTarget.value)} withAsterisk @@ -621,10 +642,11 @@ export default function Login() { {otpRequired && ( } onChange={(e) => setOtp(e.currentTarget.value)} withAsterisk style={{ flex: 1 }} @@ -636,25 +658,33 @@ export default function Login() { px={10} disabled={isLogging || otpVerified} onClick={() => handleSendOtp(mobile)} + leftSection={} style={{ alignSelf: "flex-end", marginBottom: 4 }} > - Resend + Resend - )} - - - - Note: - - Existing users logging in to the new Internet Banking for the first time should use their CIF number to avoid login issues. - - + + + + + Important Note + + Existing users logging in for the first time should use their CIF number to avoid login issues. + + + @@ -677,7 +707,6 @@ export default function Login() { > https://kccbhp.bank.in/ - {/* Footer */} @@ -704,6 +733,6 @@ export default function Login() {
- + ); }