diff --git a/services/arbiter-3.0/src/routes/admin/players.js b/services/arbiter-3.0/src/routes/admin/players.js index 2cc5217..378bf1b 100644 --- a/services/arbiter-3.0/src/routes/admin/players.js +++ b/services/arbiter-3.0/src/routes/admin/players.js @@ -17,7 +17,7 @@ router.get('/table', async (req, res) => { // Basic search implementation let query = ` - SELECT u.discord_id, u.minecraft_username, u.minecraft_uuid, + SELECT u.discord_id, u.minecraft_username, u.minecraft_uuid, u.is_staff, s.tier_level, s.status, s.updated_at FROM users u LEFT JOIN subscriptions s ON u.discord_id = s.discord_id @@ -69,4 +69,34 @@ router.post('/:discord_id/tier', async (req, res) => { } }); +// POST endpoint for staff toggle +router.post('/:discord_id/staff', async (req, res) => { + const { discord_id } = req.params; + + try { + // Toggle staff status + await db.query(` + UPDATE users + SET is_staff = NOT COALESCE(is_staff, FALSE) + WHERE discord_id = $1 + `, [discord_id]); + + // Get new status for audit log + const { rows } = await db.query(`SELECT is_staff FROM users WHERE discord_id = $1`, [discord_id]); + const newStatus = rows[0]?.is_staff ? 'Staff' : 'Non-Staff'; + + // Create audit log entry + await db.query(` + INSERT INTO admin_audit_log (admin_discord_id, action, target_discord_id, details) + VALUES ($1, 'staff_toggle', $2, $3) + `, [req.user.id, discord_id, `Changed to ${newStatus}`]); + + res.send('OK'); + + } catch (error) { + console.error('Staff toggle error:', error); + res.status(500).send('Error updating staff status'); + } +}); + module.exports = router; diff --git a/services/arbiter-3.0/src/views/admin/players/_table_body.ejs b/services/arbiter-3.0/src/views/admin/players/_table_body.ejs index f234dae..f08930b 100644 --- a/services/arbiter-3.0/src/views/admin/players/_table_body.ejs +++ b/services/arbiter-3.0/src/views/admin/players/_table_body.ejs @@ -28,20 +28,33 @@ -
- -
+
+ +
+ +
+ + + +
<% }) %>