admin: add role management endpoints + Admin UI; strengthen RBAC and add tests

This commit is contained in:
TLimoges33
2025-08-28 17:32:29 +00:00
parent f0c61de280
commit 00ad1bd8d4
5 changed files with 92 additions and 9 deletions
+28
View File
@@ -0,0 +1,28 @@
import React, {useState, useEffect} from 'react'
export default function AdminUsers(){
const [users, setUsers] = useState([])
const [msg, setMsg] = useState(null)
useEffect(()=>{
fetch('/api/v1/admin/users', {credentials:'include'}).then(r=>r.json()).then(setUsers).catch(()=>setUsers([]))
}, [])
function setRole(id, role){
fetch(`/api/v1/admin/users/${id}/role`, {method:'POST', credentials:'include', headers:{'Content-Type':'application/json'}, body: JSON.stringify({role})})
.then(r=>r.json()).then(()=> setMsg('Role updated'))
.catch(()=> setMsg('Failed'))
}
return (
<div style={{marginTop:20}}>
<h2>Admin: Users</h2>
{msg && <div style={{color:'#0366d6'}}>{msg}</div>}
<ul>
{users && users.length ? users.map(u=> (
<li key={u.id}>{u.email} {u.role} <button onClick={()=>setRole(u.id,'moderator')} style={{marginLeft:8}}>Make Moderator</button> <button onClick={()=>setRole(u.id,'admin')} style={{marginLeft:8}}>Make Admin</button></li>
)): <li>No users</li>}
</ul>
</div>
)
}
+2
View File
@@ -2,6 +2,7 @@ import React from 'react'
import Integrations from './Integrations'
import Guilds from './Guilds'
import Login from './Login'
import AdminUsers from './AdminUsers'
export default function App() {
return (
@@ -11,6 +12,7 @@ export default function App() {
<Login />
<Integrations />
<Guilds />
<AdminUsers />
</div>
)
}