forked from github-starred/komodo
add user management features
This commit is contained in:
@@ -101,6 +101,10 @@ impl MonitorClient {
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn list_users(&self) -> anyhow::Result<Vec<User>> {
|
||||
self.get("/api/users", Option::<()>::None).await
|
||||
}
|
||||
|
||||
async fn get<R: DeserializeOwned>(
|
||||
&self,
|
||||
endpoint: &str,
|
||||
|
||||
@@ -29,7 +29,7 @@ impl MonitorClient {
|
||||
enabled: bool,
|
||||
) -> anyhow::Result<Update> {
|
||||
self.post(
|
||||
"/api/permissions/update",
|
||||
"/api/permissions/modify_enabled",
|
||||
json!({
|
||||
"user_id": user_id,
|
||||
"enabled": enabled,
|
||||
@@ -37,4 +37,19 @@ impl MonitorClient {
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn modify_user_create_server_permissions(
|
||||
&self,
|
||||
user_id: &str,
|
||||
create_server_permissions: bool,
|
||||
) -> anyhow::Result<Update> {
|
||||
self.post(
|
||||
"/api/permissions/modify_create_server",
|
||||
json!({
|
||||
"user_id": user_id,
|
||||
"create_server_permissions": create_server_permissions,
|
||||
}),
|
||||
)
|
||||
.await
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,10 @@ use monitor_types::{
|
||||
SystemStats, SystemStatsQuery,
|
||||
};
|
||||
use serde_json::{json, Value};
|
||||
use tokio::{task::JoinHandle, sync::broadcast::{Receiver, self}};
|
||||
use tokio::{
|
||||
sync::broadcast::{self, Receiver},
|
||||
task::JoinHandle,
|
||||
};
|
||||
use tokio_tungstenite::{connect_async, tungstenite::Message};
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
@@ -96,7 +99,11 @@ impl MonitorClient {
|
||||
&self,
|
||||
server_id: &str,
|
||||
query: impl Into<Option<SystemStatsQuery>>,
|
||||
) -> anyhow::Result<(Receiver<SystemStats>, JoinHandle<anyhow::Result<()>>, CancellationToken)> {
|
||||
) -> anyhow::Result<(
|
||||
Receiver<SystemStats>,
|
||||
JoinHandle<anyhow::Result<()>>,
|
||||
CancellationToken,
|
||||
)> {
|
||||
let query = query.into().unwrap_or_default();
|
||||
let endpoint = format!(
|
||||
"{}/ws/stats/{server_id}?networks={}&components={}&processes={}",
|
||||
@@ -123,8 +130,11 @@ impl MonitorClient {
|
||||
stats = socket.next() => stats,
|
||||
};
|
||||
if let Some(Ok(Message::Text(stats))) = stats {
|
||||
let stats: SystemStats = serde_json::from_str(&stats).context("failed to parse msg as SystemStats")?;
|
||||
sender.send(stats).context("failed to send stats through broadcast channel")?;
|
||||
let stats: SystemStats = serde_json::from_str(&stats)
|
||||
.context("failed to parse msg as SystemStats")?;
|
||||
sender
|
||||
.send(stats)
|
||||
.context("failed to send stats through broadcast channel")?;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user