patch: fixed admin panel

This commit is contained in:
riomoo 2025-11-23 04:55:46 -05:00
parent afc42b2991
commit f46ef4b4fe
Signed by: riomoo
SSH key fingerprint: SHA256:dP5B5iLpXU5V8aBA8eGm9tN5YtxXJybnv4McyltPyzM
2 changed files with 53 additions and 11 deletions

View file

@ -118,6 +118,7 @@ func main() {
http.HandleFunc("/api/logout", handleLogout)
http.HandleFunc("/api/comics", authMiddleware(handleComics))
http.HandleFunc("/api/upload", authMiddleware(handleUpload))
http.HandleFunc("/api/user", authMiddleware(handleUser))
http.HandleFunc("/api/organize", authMiddleware(handleOrganize))
http.HandleFunc("/api/pages/", authMiddleware(handleComicPages))
http.HandleFunc("/api/comic/", authMiddleware(handleComicFile))
@ -209,6 +210,21 @@ func handleToggleRegistration(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(map[string]bool{"enabled": registrationEnabled})
}
func handleUser(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
if r.Method != http.MethodGet {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
user := getCurrentUser(r)
json.NewEncoder(w).Encode(map[string]interface{}{
"username": user.Username,
"is_admin": user.IsAdmin,
})
}
func getCurrentUser(r *http.Request) User {
cookie, err := r.Cookie("session")
if err != nil {

View file

@ -1797,18 +1797,44 @@
}
}
fetch('/api/comics')
.then(function(res) {
if (res.ok) {
document.getElementById('authSection').classList.add('hidden');
document.getElementById('mainSection').classList.remove('hidden');
document.getElementById('userInfo').classList.remove('hidden');
loadTags().then(loadComics);
fetch('/api/user')
.then(function(res) {
if (res.ok) {
return res.json();
}
})
.then(function(data) {
if (data) {
window.isAdmin = data.is_admin || false;
if (window.isAdmin) {
fetch('/api/admin/toggle-registration')
.then(function(adminRes) {
if (adminRes.ok) return adminRes.json();
})
.then(function(adminData) {
if (adminData) {
window.registrationEnabled = adminData.enabled;
}
});
}
})
.catch(function(err) {
console.error('Initial comics fetch failed:', err);
});
}
})
.catch(function(err) {
console.error('User fetch failed:', err);
});
fetch('/api/comics')
.then(function(res) {
if (res.ok) {
document.getElementById('authSection').classList.add('hidden');
document.getElementById('mainSection').classList.remove('hidden');
document.getElementById('userInfo').classList.remove('hidden');
loadTags().then(loadComics);
}
})
.catch(function(err) {
console.error('Initial comics fetch failed:', err);
});
</script>
</body>
</html>