From 3b813a85dabae31cbf51e3ab9d197a2f1eace11a Mon Sep 17 00:00:00 2001 From: DungTT Date: Mon, 20 Apr 2026 15:27:27 +0700 Subject: [PATCH] sercurity --- public/js/app.js | 24 +++++++++++++++++++----- public/pages/login.html | 2 +- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/public/js/app.js b/public/js/app.js index 807418c..6d65067 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -456,6 +456,15 @@ class AccountManager { }; } + maskForeignAccountUsername(username) { + const value = String(username || '').trim(); + if (!value) return '-'; + if (value.length < 5) { + return `${value.slice(0, 1)}*****`; + } + return `${value.slice(0, 3)}*****`; + } + handleLogout() { if (confirm('Are you sure you want to logout?')) { this.saveToStorage('currentUser', null); @@ -586,7 +595,6 @@ class AccountManager { - @@ -596,6 +604,10 @@ class AccountManager { ${pageInfo.data.map(acc => { const isOwnAccount = acc.UserId == currentUserId; + const accountUsername = acc.AccountUsername || '-'; + const displayAccountUsername = isOwnAccount + ? accountUsername + : this.maskForeignAccountUsername(accountUsername); const actionContent = isOwnAccount ? ` - - + @@ -778,6 +789,10 @@ class AccountManager { this.accountPage = pageInfo.current; tbody.innerHTML = pageInfo.data.map(acc => { const isOwnAccount = acc.UserId == currentUserId; + const accountUsername = acc.AccountUsername || '-'; + const displayAccountUsername = isOwnAccount + ? accountUsername + : this.maskForeignAccountUsername(accountUsername); const actionContent = isOwnAccount ? ` - - + diff --git a/public/pages/login.html b/public/pages/login.html index 2d40221..a847897 100644 --- a/public/pages/login.html +++ b/public/pages/login.html @@ -320,7 +320,7 @@ passwordInput.focus(); } } catch (error) { - errorMessage.textContent = 'Connection error. Try admin / admin'; + errorMessage.textContent = 'Connection error. Try again later.'; errorMessage.classList.remove('hidden'); console.error('Login error:', error); }
User Owner Username Service