fix: login redirects to /rbac/user/login.ui, clean up iframe/modal, build.sh adds rbac user any perms

This commit is contained in:
yumoqing 2026-08-12 12:53:15 +08:00
parent 713f02f488
commit 35d8a3af98
2 changed files with 12 additions and 47 deletions

View File

@ -187,6 +187,17 @@ UPDATE permission SET path = CONCAT(path, '**')
WHERE path IN ('/pcpool/', '/pcc/', '/storage_mgr/', '/image_mgr/', '/pccs/', '/appbase/', '/imgs/', '/bricks/')
AND path NOT LIKE '%**';
" 2>/dev/null
# 确保 /rbac/user/ 下所有文件有 any 角色权限
mysql -u test -ptest123 pccs -e "
INSERT IGNORE INTO rolepermission (id, roleid, permid)
SELECT CONCAT('ANY_', p.id), 'any', p.id
FROM permission p
WHERE p.path LIKE '/rbac/user/%'
AND NOT EXISTS (
SELECT 1 FROM rolepermission rp
WHERE rp.roleid = 'any' AND rp.permid = p.id
);
" 2>/dev/null
green " OK"
# ============================================================

View File

@ -25,24 +25,6 @@ body{font-family:system-ui;background:var(--bg);color:var(--text);min-height:100
.card p{margin:0 0 12px;font-size:.85rem;color:var(--text2)}
.card a{color:var(--primary);text-decoration:none;font-weight:600;display:inline-block;margin-right:16px}
.footer{text-align:center;padding:12px;font-size:.75rem;color:var(--text3);border-top:1px solid var(--border)}
/* Modal */
.modal-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:1000;justify-content:center;align-items:center}
.modal-overlay.show{display:flex}
.modal{background:var(--card-bg);border-radius:12px;width:400px;max-width:90vw;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}
.modal-header h3{margin:0;font-size:1rem}
.modal-close{background:none;border:none;font-size:1.2rem;cursor:pointer;color:var(--text2)}
.modal-body{padding:20px}
.form-group{margin-bottom:12px}
.form-group label{display:block;font-size:.85rem;color:var(--text2);margin-bottom:4px}
.form-group input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:.9rem;background:var(--bg);color:var(--text);box-sizing:border-box}
.btn{display:inline-block;padding:10px 16px;border:none;border-radius:8px;font-size:.9rem;cursor:pointer;font-weight:600}
.btn-primary{background:var(--primary);color:#fff;width:100%}
.btn-primary:hover{opacity:.9}
.tab-bar{display:flex;border-bottom:1px solid var(--border);margin-bottom:16px}
.tab{flex:1;text-align:center;padding:8px;cursor:pointer;font-size:.9rem;color:var(--text2);border-bottom:2px solid transparent}
.tab.active{color:var(--primary);border-bottom-color:var(--primary)}
.msg{margin-top:12px;font-size:.85rem;text-align:center;color:#dc2626}
</style></head>
<body>
<div class="header">
@ -51,16 +33,7 @@ body{font-family:system-ui;background:var(--bg);color:var(--text);min-height:100
<div class="ctl">
<button onclick="toggleTheme()" id="btn-theme">🌓</button>
<button id="btn-lang">🌐 中文</button>
<button id="btn-login" onclick="showLogin()">👤 登录</button>
</div>
</div>
<div class="modal-overlay" id="login-modal">
<div class="modal" style="width:460px;height:520px;max-width:95vw;max-height:90vh">
<div class="modal-header"><h3 id="modal-title">登录</h3><button class="modal-close" onclick="closeLogin()"></button></div>
<div class="modal-body" style="padding:0;height:calc(100% - 49px)">
<iframe id="login-iframe" src="" style="width:100%;height:100%;border:none" allow="same-origin"></iframe>
</div>
<button id="btn-login" onclick="location.href='/rbac/user/login.ui'">👤 登录</button>
</div>
</div>
@ -91,25 +64,6 @@ body{font-family:system-ui;background:var(--bg);color:var(--text);min-height:100
var theme=localStorage.getItem('pccs-theme')||'light';
document.documentElement.setAttribute('data-theme',theme);
function toggleTheme(){theme=theme==='light'?'dark':'light';document.documentElement.setAttribute('data-theme',theme);localStorage.setItem('pccs-theme',theme)}
function showLogin(){
var iframe=document.getElementById('login-iframe');
iframe.src='/rbac/user/login.ui';
document.getElementById('login-modal').classList.add('show');
// poll for session cookie (RBAC sets AIOHTTP_SESSION on successful login)
var poll=setInterval(function(){
if(document.cookie.indexOf('AIOHTTP_SESSION')>=0){
clearInterval(poll);
closeLogin();
location.reload();
}
},500);
// stop polling after 5 min
setTimeout(function(){clearInterval(poll)},300000);
}
function closeLogin(){
document.getElementById('login-modal').classList.remove('show');
document.getElementById('login-iframe').src='';
}
</script>
</body>
</html>