From b6adb7a3f0549dce83b0ab56936a8a5cc8a98987 Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Thu, 4 Jun 2026 18:58:12 +0000 Subject: [PATCH] Blur credentials for non-master admins in game management - Game list cards: login/password fields blurred with user-select/pointer-events disabled for non-master admins; URLs and guide remain readable - View-only edit panel: credential fields blurred, copy button hidden for creds; URL fields retain open + copy buttons Co-Authored-By: Claude Sonnet 4.6 --- admin/index.php | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/admin/index.php b/admin/index.php index 61b1b91..f79d34a 100644 --- a/admin/index.php +++ b/admin/index.php @@ -2884,30 +2884,30 @@ async function loadGames() { ` : ''} ${g.agent_login ? `
LOGIN - ${escHtmlA(g.agent_login)} + ${escHtmlA(g.agent_login)}
` : ''} ${g.agent_password ? `
PASSWORD - ${escHtmlA(g.agent_password)} + ${escHtmlA(g.agent_password)}
` : ''} ${g.agent_guide ? `
AGENT GUIDE ${escHtmlA(g.agent_guide)}
` : ''} ${(g.sub_agent_login||g.sub_agent_password) ? `
SUB-ACCOUNT
` : ''} ${g.sub_agent_login ? `
LOGIN - ${escHtmlA(g.sub_agent_login)} + ${escHtmlA(g.sub_agent_login)}
` : ''} ${g.sub_agent_password ? `
PASSWORD - ${escHtmlA(g.sub_agent_password)} + ${escHtmlA(g.sub_agent_password)}
` : ''} ${(g.cashier_login||g.cashier_password) ? `
CASHIER
` : ''} ${g.cashier_login ? `
LOGIN - ${escHtmlA(g.cashier_login)} + ${escHtmlA(g.cashier_login)}
` : ''} ${g.cashier_password ? `
PASSWORD - ${escHtmlA(g.cashier_password)} + ${escHtmlA(g.cashier_password)}
` : ''} @@ -2970,15 +2970,15 @@ function editGame(id) { document.getElementById('gf-credit-btn').disabled = true; const agentFields = [ - {label:'Agent Login', key:'agent_login', isUrl:false}, - {label:'Agent Password', key:'agent_password', isUrl:false}, - {label:'Agent Link', key:'agent_link', isUrl:true}, - {label:'Games Link', key:'games_link', isUrl:true}, - {label:'Agent Guide', key:'agent_guide', isUrl:false}, - {label:'Sub-Account Agent Login', key:'sub_agent_login', isUrl:false}, - {label:'Sub-Account Agent Password',key:'sub_agent_password', isUrl:false}, - {label:'Cashier Login', key:'cashier_login', isUrl:false}, - {label:'Cashier Password', key:'cashier_password', isUrl:false}, + {label:'Agent Login', key:'agent_login', isUrl:false, isCred:true}, + {label:'Agent Password', key:'agent_password', isUrl:false, isCred:true}, + {label:'Agent Link', key:'agent_link', isUrl:true, isCred:false}, + {label:'Games Link', key:'games_link', isUrl:true, isCred:false}, + {label:'Agent Guide', key:'agent_guide', isUrl:false, isCred:false}, + {label:'Sub-Account Agent Login', key:'sub_agent_login', isUrl:false, isCred:true}, + {label:'Sub-Account Agent Password',key:'sub_agent_password', isUrl:false, isCred:true}, + {label:'Cashier Login', key:'cashier_login', isUrl:false, isCred:true}, + {label:'Cashier Password', key:'cashier_password', isUrl:false, isCred:true}, ]; const content = document.getElementById('gf-agent-view-content'); content.innerHTML = agentFields.map(f => { @@ -2988,14 +2988,16 @@ function editGame(id) { style="background:rgba(0,229,255,0.1);border:1px solid rgba(0,229,255,0.25);color:var(--cyan);border-radius:5px;padding:3px 9px;font-size:12px;font-weight:700;cursor:pointer;flex-shrink:0;text-decoration:none"> ↗ Open ` : ''; - return `
- ${escHtmlA(f.label)} - ${escHtmlA(val)} - ${openBtn} - + `; + return `
+ ${escHtmlA(f.label)} + ${escHtmlA(val)} + ${openBtn} + ${copyBtn}
`; }).join(''); if (!content.innerHTML.trim()) {