chore: update security patch of codebase.
chore: Update TODO and instruction list
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
# dependencies
|
# dependencies
|
||||||
/node_modules
|
/node_modules
|
||||||
/package-lock.json
|
|
||||||
/.pnp
|
/.pnp
|
||||||
.pnp.js
|
.pnp.js
|
||||||
.yarn/install-state.gz
|
.yarn/install-state.gz
|
||||||
@@ -30,6 +29,9 @@ yarn-error.log*
|
|||||||
# local env files
|
# local env files
|
||||||
.env*.local
|
.env*.local
|
||||||
|
|
||||||
|
#dependency
|
||||||
|
package-lock.json
|
||||||
|
|
||||||
# vercel
|
# vercel
|
||||||
.vercel
|
.vercel
|
||||||
|
|
||||||
|
20
TODO.md
20
TODO.md
@@ -1 +1,21 @@
|
|||||||
# Todo
|
# Todo
|
||||||
|
|
||||||
|
### Security
|
||||||
|
- Back and front click on browser ( <- ->) logout.
|
||||||
|
- Cross from browser logout
|
||||||
|
- Taking Url and try to login -Logout
|
||||||
|
|
||||||
|
### Feature
|
||||||
|
- Password Expiry Logic
|
||||||
|
- login -> check password Expiry -> Change password -> login screen
|
||||||
|
- Logout popup :
|
||||||
|
- Are you sure want to logout?
|
||||||
|
- Home page password Expiry message
|
||||||
|
- Set userId and login with userID
|
||||||
|
- Limit of transaction daily
|
||||||
|
- Statement Download
|
||||||
|
- In Every OTP page "Resend button" & 5 min timing of expiry.
|
||||||
|
- OTP binding with actual mobile number.
|
||||||
|
- IN settings page NOTE position Fixing.
|
||||||
|
|
||||||
|
|
||||||
|
86
instruction.md
Normal file
86
instruction.md
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# AWS CLI, Session Manager & Database Access Guide
|
||||||
|
|
||||||
|
## 1. Setup
|
||||||
|
- Download **AWS CLI**
|
||||||
|
- Download **AWS Session Manager Plugin**
|
||||||
|
- Generate **Key for KCCB**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Machine
|
||||||
|
```bash
|
||||||
|
|
||||||
|
UAT (IB- frontend) : i-0b55435e15425f1c3
|
||||||
|
Linux : i-0c850dcf8b85b1447
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. Port Forwarding
|
||||||
|
|
||||||
|
### API (localhost → EC2:8080)
|
||||||
|
```bash
|
||||||
|
aws ssm start-session --target i-0c850dcf8b85b1447 --document-name --profile kccb AWS-StartPortForwardingSession --parameters "portNumber"=["8080"],"localPortNumber"=["8080"]
|
||||||
|
```
|
||||||
|
### PostgreSQL (localhost:5431 → EC2:5432)
|
||||||
|
```bash
|
||||||
|
aws ssm start-session --target i-0c850dcf8b85b1447 --document-name --profile kccb AWS-StartPortForwardingSession --parameters "portNumber"=["5432"],"localPortNumber"=["5431"]
|
||||||
|
```
|
||||||
|
### CBS (localhost → EC2:8686)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
aws ssm start-session --target i-0c850dcf8b85b1447 --document-name --profile kccb AWS-StartPortForwardingSession --parameters "portNumber"=["8686"],"localPortNumber"=["8686"]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Database Access
|
||||||
|
|
||||||
|
```bash
|
||||||
|
aws ssm start-session --target i-0c850dcf8b85b1447 --profile kccb
|
||||||
|
```
|
||||||
|
## 4.PostgreSQL Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Connect as postgres
|
||||||
|
psql -U postgres
|
||||||
|
|
||||||
|
# List all databases
|
||||||
|
\l
|
||||||
|
|
||||||
|
# Connect to kmobile
|
||||||
|
psql -U admin -d kmobile
|
||||||
|
|
||||||
|
# Password: kmobile
|
||||||
|
|
||||||
|
# Query data
|
||||||
|
SELECT * FROM users;
|
||||||
|
|
||||||
|
# Expanded display
|
||||||
|
\x
|
||||||
|
|
||||||
|
# See all tables
|
||||||
|
\d
|
||||||
|
|
||||||
|
# Table details
|
||||||
|
\d users;
|
||||||
|
|
||||||
|
# Switch database with specific user
|
||||||
|
\c kmobile_banking kmobile_app_rw
|
||||||
|
|
||||||
|
# Grant permissions
|
||||||
|
grant select, insert, update, delete on table admin to kmobile_app_rw;
|
||||||
|
```
|
||||||
|
## 4. Linux Machine Access
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run the .bat file first
|
||||||
|
ssh username@localhost
|
||||||
|
# Enter your password
|
||||||
|
```
|
||||||
|
## Copy File from Local → Linux
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scp -P 9022 Smsservice/smsserviceapplication.jar <username>@localhost:/home/<username>
|
||||||
|
|
||||||
|
# ssh nabanita@localhost -p 9022
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
@@ -1,36 +0,0 @@
|
|||||||
- download Aws cli and Aws session manager
|
|
||||||
- Key generate for KCCB
|
|
||||||
- port forwarding :
|
|
||||||
|
|
||||||
aws ssm start-session --target i-0c850dcf8b85b1447 --document-name --profile kccb AWS-StartPortForwardingSession --parameters "portNumber"=["8080"],"localPortNumber"=["8080"]
|
|
||||||
|
|
||||||
- run the api in localhost then port forward to Postgres
|
|
||||||
aws ssm start-session --target i-0c850dcf8b85b1447 --document-name --profile kccb AWS-StartPortForwardingSession --parameters "portNumber"=["5432"],"localPortNumber"=["5431"]
|
|
||||||
|
|
||||||
- For CBS port forward
|
|
||||||
aws ssm start-session --target i-0c850dcf8b85b1447 --document-name --profile kccb AWS-StartPortForwardingSession --parameters "portNumber"=["8686"],"localPortNumber"=["8686"]
|
|
||||||
______________________________________________________________________
|
|
||||||
|
|
||||||
For database:
|
|
||||||
- aws ssm start-session --target i-0c850dcf8b85b1447 --profile kccb
|
|
||||||
- psql -U postgres
|
|
||||||
- \l
|
|
||||||
- psql -U admin -d kmobile
|
|
||||||
- password : kmobile
|
|
||||||
- SELECT * FROM users;
|
|
||||||
- \x
|
|
||||||
- \d -- all tables details
|
|
||||||
- \d users; -- see the data type of column
|
|
||||||
- \c kmobile_banking kmobile_app_rw -- alter the user
|
|
||||||
- grant select,insert,update,delete on table admin to kmobile_app_rw; -- give read write access to a table
|
|
||||||
|
|
||||||
______________________________________________________________________
|
|
||||||
|
|
||||||
How to connect through linux machine?
|
|
||||||
- run the bat file.
|
|
||||||
- shh username@localhost
|
|
||||||
- give your password
|
|
||||||
|
|
||||||
Copy local machine to linux machine :
|
|
||||||
- scp -P 9022 Smsservice/smsserviceapplication.jar <username>@localhost:/home/<username>
|
|
||||||
- ssh nabanita@localhost -p 9022
|
|
@@ -27,6 +27,29 @@ export default function Home() {
|
|||||||
const selectedLNData = loanAccounts.find(acc => acc.stAccountNo === selectedLN);
|
const selectedLNData = loanAccounts.find(acc => acc.stAccountNo === selectedLN);
|
||||||
const [showBalance, setShowBalance] = useState(false);
|
const [showBalance, setShowBalance] = useState(false);
|
||||||
|
|
||||||
|
// If back and forward button is clicked
|
||||||
|
useEffect(() => {
|
||||||
|
window.history.pushState(null, "", window.location.href);
|
||||||
|
const handlePopState = () => {
|
||||||
|
localStorage.removeItem("access_token");
|
||||||
|
sessionStorage.removeItem("access_token");
|
||||||
|
localStorage.removeItem("remitter_name");
|
||||||
|
router.push("/login");
|
||||||
|
};
|
||||||
|
const handleBeforeUnload = () => {
|
||||||
|
// logout on tab close / refresh
|
||||||
|
localStorage.removeItem("access_token");
|
||||||
|
sessionStorage.removeItem("access_token");
|
||||||
|
localStorage.removeItem("remitter_name");
|
||||||
|
};
|
||||||
|
window.addEventListener("popstate", handlePopState);
|
||||||
|
window.addEventListener("beforeunload", handleBeforeUnload);
|
||||||
|
return () => {
|
||||||
|
window.removeEventListener("popstate", handlePopState);
|
||||||
|
window.addEventListener("beforeunload", handleBeforeUnload);
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
async function handleFetchUserDetails() {
|
async function handleFetchUserDetails() {
|
||||||
try {
|
try {
|
||||||
const token = localStorage.getItem("access_token");
|
const token = localStorage.getItem("access_token");
|
||||||
|
@@ -16,10 +16,16 @@ export default function RootLayout({ children }: { children: React.ReactNode })
|
|||||||
const [userLastLoginDetails, setUserLastLoginDetails] = useState(null);
|
const [userLastLoginDetails, setUserLastLoginDetails] = useState(null);
|
||||||
const [custname, setCustname] = useState<string | null>(null);
|
const [custname, setCustname] = useState<string | null>(null);
|
||||||
|
|
||||||
|
function doLogout() {
|
||||||
|
localStorage.removeItem("access_token");
|
||||||
|
sessionStorage.removeItem("access_token");
|
||||||
|
localStorage.removeItem("remitter_name");
|
||||||
|
router.push("/login");
|
||||||
|
}
|
||||||
|
|
||||||
async function handleLogout(e: React.FormEvent) {
|
async function handleLogout(e: React.FormEvent) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
localStorage.removeItem("access_token");
|
doLogout()
|
||||||
localStorage.removeItem("remitter_name");
|
|
||||||
router.push("/login");
|
router.push("/login");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,6 +71,25 @@ export default function RootLayout({ children }: { children: React.ReactNode })
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
useEffect(() => {
|
||||||
|
// Push fake history state to trap navigation
|
||||||
|
window.history.pushState(null, "", window.location.href);
|
||||||
|
const handlePopState = () => {
|
||||||
|
doLogout(); // logout when back/forward pressed
|
||||||
|
};
|
||||||
|
const handleBeforeUnload = (e: BeforeUnloadEvent) => {
|
||||||
|
// logout on tab close / refresh
|
||||||
|
localStorage.removeItem("access_token");
|
||||||
|
sessionStorage.removeItem("access_token");
|
||||||
|
localStorage.removeItem("remitter_name");
|
||||||
|
};
|
||||||
|
window.addEventListener("popstate", handlePopState);
|
||||||
|
window.addEventListener("beforeunload", handleBeforeUnload);
|
||||||
|
return () => {
|
||||||
|
window.removeEventListener("popstate", handlePopState);
|
||||||
|
window.addEventListener("beforeunload", handleBeforeUnload);
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const token = localStorage.getItem("access_token");
|
const token = localStorage.getItem("access_token");
|
||||||
|
@@ -25,6 +25,8 @@ export default function ForgetLoginPwd() {
|
|||||||
async function handleLogout(e: React.FormEvent) {
|
async function handleLogout(e: React.FormEvent) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
localStorage.removeItem("access_token");
|
localStorage.removeItem("access_token");
|
||||||
|
sessionStorage.removeItem("access_token")
|
||||||
|
localStorage.removeItem("remitter_name");
|
||||||
router.push("/login")
|
router.push("/login")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,6 +36,8 @@ export default function SetLoginPwd() {
|
|||||||
async function handleLogout(e: React.FormEvent) {
|
async function handleLogout(e: React.FormEvent) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
localStorage.removeItem("access_token");
|
localStorage.removeItem("access_token");
|
||||||
|
sessionStorage.removeItem("access_token")
|
||||||
|
localStorage.removeItem("remitter_name");
|
||||||
router.push("/login")
|
router.push("/login")
|
||||||
}
|
}
|
||||||
const regenerateCaptcha = () => {
|
const regenerateCaptcha = () => {
|
||||||
|
@@ -35,6 +35,8 @@ export default function SetTransactionPwd() {
|
|||||||
async function handleLogout(e: React.FormEvent) {
|
async function handleLogout(e: React.FormEvent) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
localStorage.removeItem("access_token");
|
localStorage.removeItem("access_token");
|
||||||
|
sessionStorage.removeItem("access_token")
|
||||||
|
localStorage.removeItem("remitter_name");
|
||||||
router.push("/login")
|
router.push("/login")
|
||||||
}
|
}
|
||||||
const regenerateCaptcha = () => {
|
const regenerateCaptcha = () => {
|
||||||
|
Reference in New Issue
Block a user