+
@@ -94,19 +91,24 @@ 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(){document.getElementById('login-modal').classList.add('show');document.getElementById('login-user').focus()}
-function closeLogin(){document.getElementById('login-modal').classList.remove('show')}
-async function doLogin(){
- var u=document.getElementById('login-user').value;
- var p=document.getElementById('login-pass').value;
- if(!u||!p){document.getElementById('login-msg').textContent='请输入用户名和密码';return}
- var fd=new FormData();fd.append('username',u);fd.append('password',p);
- try{
- var r=await fetch('/pccs/api/a1b2c3d4e5.dspy',{method:'POST',body:fd});
- var d=await r.json();
- if(d.status==='ok'){closeLogin();document.getElementById('login-msg').textContent=''}
- else document.getElementById('login-msg').textContent=d.message||'登录失败'
- }catch(e){document.getElementById('login-msg').textContent='网络错误'}
+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='';
}