stuff
This commit is contained in:
@@ -7,7 +7,8 @@ use net::{ClientSender, ConAccepter, listen};
|
||||
use openworm::{
|
||||
net::{
|
||||
ClientMsg, ClientRequestMsg, CreateAccount, CreateAccountResp, DisconnectReason, LoadMsg,
|
||||
Login, LoginResp, RecvHandler, ServerError, ServerMsg, install_crypto_provider,
|
||||
Login, LoginResp, RecvHandler, RequestUsersResp, ServerError, ServerMsg, ServerUser,
|
||||
install_crypto_provider,
|
||||
},
|
||||
rsc::DataDir,
|
||||
};
|
||||
@@ -49,7 +50,7 @@ pub async fn run_server(port: u16) {
|
||||
db: db.clone(),
|
||||
};
|
||||
if db.users.is_empty() {
|
||||
let token = account_token(&db, ServerPerms::ACCOUNT_TOKENS);
|
||||
let token = account_token(&db, ServerPerms::ALL);
|
||||
println!("no users found, token for admin: {token}");
|
||||
}
|
||||
let (endpoint, handle) = listen(port, &dir.path, handler);
|
||||
@@ -231,6 +232,27 @@ impl RecvHandler<ClientRequestMsg> for ClientHandler {
|
||||
*self.state.write().await = ClientState::Authed(id);
|
||||
let _ = replier.send(LoginResp::Ok { id }).await;
|
||||
}
|
||||
ClientMsg::RequestUsers(_) => {
|
||||
if self
|
||||
.db
|
||||
.users
|
||||
.get(&self.id)
|
||||
.is_some_and(|u| !u.server_perms.contains(ServerPerms::ALL))
|
||||
{
|
||||
let _ = replier.send(ServerError::NoPermission).await;
|
||||
return;
|
||||
}
|
||||
let users: Vec<_> = self
|
||||
.db
|
||||
.users
|
||||
.iter()
|
||||
.map(|(id, u)| ServerUser {
|
||||
id,
|
||||
username: u.username,
|
||||
})
|
||||
.collect();
|
||||
let _ = replier.send(RequestUsersResp { users }).await;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user