feat: implement comprehensive admin dashboard for server management and user oversight

This commit is contained in:
2026-02-21 03:28:21 +01:00
parent fa29bd5a85
commit 6dc940bb3a
5 changed files with 203 additions and 6 deletions

View File

@@ -401,9 +401,14 @@ ipcMain.handle('login-to-server', async () => {
const saveServerAuth = (token: string) => {
if (captured) return; captured = true;
let serverSteamId = undefined;
try { const payload = JSON.parse(Buffer.from(token.split('.')[1]!, 'base64').toString()); serverSteamId = payload.steamId; } catch (e) {}
let isAdmin = false;
try {
const payload = JSON.parse(Buffer.from(token.split('.')[1]!, 'base64').toString());
serverSteamId = payload.steamId;
isAdmin = !!payload.isAdmin;
} catch (e) {}
const current = store.get('serverConfig');
store.set('serverConfig', { ...current, token, serverSteamId, enabled: true });
store.set('serverConfig', { ...current, token, serverSteamId, isAdmin, enabled: true });
initBackend();
authWindow.close();
resolve(true);
@@ -502,6 +507,14 @@ ipcMain.handle('revoke-all-account-access', async (event, steamId: string) => {
ipcMain.handle('get-community-accounts', async () => { initBackend(); return backend ? await backend.getCommunityAccounts() : []; });
ipcMain.handle('get-server-users', async () => { initBackend(); return backend ? await backend.getServerUsers() : []; });
// --- Admin IPC ---
ipcMain.handle('admin-get-stats', async () => { initBackend(); return backend ? await backend.getAdminStats() : null; });
ipcMain.handle('admin-get-users', async () => { initBackend(); return backend ? await backend.getAdminUsers() : []; });
ipcMain.handle('admin-delete-user', async (event, userId: string) => { initBackend(); if (backend) await backend.deleteUser(userId); return true; });
ipcMain.handle('admin-get-accounts', async () => { initBackend(); return backend ? await backend.getAdminAccounts() : []; });
ipcMain.handle('admin-remove-account', async (event, steamId: string) => { initBackend(); if (backend) await backend.forceRemoveAccount(steamId); return true; });
ipcMain.handle('switch-account', async (event, loginName: string) => await handleSwitchAccount(loginName));
ipcMain.handle('open-external', (event, url: string) => shell.openExternal(url));