提交登录修改
This commit is contained in:
@@ -193,7 +193,7 @@
|
||||
{% endif %}
|
||||
<span>{{ username }}</span>
|
||||
<button type="button" class="header-update-btn" id="homeUpdateToggle" title="检测更新">↻</button>
|
||||
<a href="/logout" onclick="handleLogout()">退出</a>
|
||||
<a href="/logout" onclick="return handleLogout(event);">退出</a>
|
||||
<div class="header-update-panel" id="homeUpdatePanel">
|
||||
<div class="header-update-title"><span>↻</span> 软件更新</div>
|
||||
<div class="update-block">
|
||||
@@ -220,22 +220,29 @@
|
||||
function getAppPermissionCacheKey(uid) {
|
||||
return 'app_column_permissions:' + String(uid || '');
|
||||
}
|
||||
// 权限校验:根据 column-permissions 接口按 column_key 显示入口
|
||||
// 权限校验:根据 Java column-permissions 接口按 column_key 显示入口
|
||||
(function() {
|
||||
localStorage.setItem("uid",{{ user_id }})
|
||||
var uid = document.body.getAttribute('data-user-id');
|
||||
if (!uid) return;
|
||||
var cacheKey = getAppPermissionCacheKey(uid);
|
||||
var baseUrl = window.location.origin;
|
||||
var apiUrl = baseUrl + '/api/admin/user/' + uid + '/column-permissions';
|
||||
fetch(apiUrl, { credentials: 'same-origin' })
|
||||
var AUTH_TOKEN_KEY = 'aiimage_auth_token';
|
||||
var JAVA_API_BASE = "{{ java_api_base or '' }}".replace(/\/+$/, '');
|
||||
var token = '';
|
||||
try { token = localStorage.getItem(AUTH_TOKEN_KEY) || ''; } catch (e) {}
|
||||
if (!JAVA_API_BASE || !token) return;
|
||||
var apiUrl = JAVA_API_BASE + '/api/admin/permission-users/' + uid + '/column-permissions?menuType=app';
|
||||
fetch(apiUrl, {
|
||||
credentials: 'include',
|
||||
headers: { 'Authorization': 'Bearer ' + token }
|
||||
})
|
||||
.then(function(r) { return r.json(); })
|
||||
.then(function(res) {
|
||||
if (!res || !res.success || !Array.isArray(res.items)) return;
|
||||
if (!res || !res.success || !Array.isArray(res.data)) return;
|
||||
try {
|
||||
localStorage.setItem(cacheKey, JSON.stringify(res.items));
|
||||
localStorage.setItem(cacheKey, JSON.stringify(res.data));
|
||||
} catch (e) {}
|
||||
var allowedKeys = res.items.map(function(item) { return (item.column_key || '').toLowerCase(); });
|
||||
var allowedKeys = res.data.map(function(item) { return (item.columnKey || item.column_key || '').toLowerCase(); });
|
||||
document.querySelectorAll('.entrances .entrance-btn[data-column-key]').forEach(function(btn) {
|
||||
var key = (btn.getAttribute('data-column-key') || '').toLowerCase();
|
||||
btn.style.display = allowedKeys.indexOf(key) >= 0 ? '' : 'none';
|
||||
@@ -255,16 +262,45 @@
|
||||
};
|
||||
});
|
||||
|
||||
function handleLogout() {
|
||||
try{
|
||||
localStorage.removeItem('maixiang_api_key');
|
||||
var uid = document.body.getAttribute('data-user-id');
|
||||
if (uid) {
|
||||
localStorage.removeItem(getAppPermissionCacheKey(uid));
|
||||
}
|
||||
}catch (e) {
|
||||
console.log(e)
|
||||
function handleLogout(ev) {
|
||||
if (ev && ev.preventDefault) ev.preventDefault();
|
||||
var AUTH_TOKEN_KEY = 'aiimage_auth_token';
|
||||
var JAVA_API_BASE = "{{ java_api_base or '' }}".replace(/\/+$/, '');
|
||||
var token = '';
|
||||
try { token = localStorage.getItem(AUTH_TOKEN_KEY) || ''; } catch (e) {}
|
||||
|
||||
function cleanLocal() {
|
||||
try {
|
||||
localStorage.removeItem('maixiang_api_key');
|
||||
localStorage.removeItem(AUTH_TOKEN_KEY);
|
||||
var uid = document.body.getAttribute('data-user-id');
|
||||
if (uid) {
|
||||
localStorage.removeItem(getAppPermissionCacheKey(uid));
|
||||
}
|
||||
} catch (e) { console.log(e); }
|
||||
}
|
||||
|
||||
function gotoPythonLogout() {
|
||||
cleanLocal();
|
||||
window.location.href = '/logout';
|
||||
}
|
||||
|
||||
if (!JAVA_API_BASE || !token) {
|
||||
gotoPythonLogout();
|
||||
return false;
|
||||
}
|
||||
// 先让 Java 端清 cookie/会话,再走 Python /logout 清 Python cookie
|
||||
var headers = { 'Authorization': 'Bearer ' + token };
|
||||
try {
|
||||
fetch(JAVA_API_BASE + '/logout', {
|
||||
method: 'POST',
|
||||
credentials: 'include',
|
||||
headers: headers
|
||||
}).then(gotoPythonLogout).catch(gotoPythonLogout);
|
||||
} catch (e) {
|
||||
gotoPythonLogout();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 软件更新(与 index 设置中逻辑一致)
|
||||
@@ -346,19 +382,6 @@
|
||||
};
|
||||
btnDownload.style.display = 'none';
|
||||
})();
|
||||
// (function() {
|
||||
// fetch('/api/auth/check', { credentials: 'same-origin' })
|
||||
// .then(function(r) { return r.json(); })
|
||||
// .then(function(res) {
|
||||
// if (res.logged_in && res.redirect) {
|
||||
// window.location.href = res.redirect;
|
||||
// }else{
|
||||
// window.location.href = "/login"
|
||||
// // handleLogout()
|
||||
// }
|
||||
// })
|
||||
// .catch(function() {});
|
||||
// })();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user