backend: blocked pairing server with duplicate name

This commit is contained in:
2025-07-18 17:44:42 -06:00
parent 0edf7c60c1
commit 6ae459ddf5
+29 -1
View File
@@ -292,7 +292,11 @@ async fn send_client_pairing_secret(
#[craft]
impl crate::config::ConfigFile {
#[craft(endpoint(status_codes(StatusCode::OK, StatusCode::INTERNAL_SERVER_ERROR)))]
#[craft(endpoint(status_codes(
StatusCode::OK,
StatusCode::BAD_REQUEST,
StatusCode::INTERNAL_SERVER_ERROR
)))]
pub async fn post_pair(
self: ::std::sync::Arc<Self>,
body: salvo::oapi::extract::JsonBody<PostPairParams>,
@@ -305,6 +309,30 @@ impl crate::config::ConfigFile {
name: params.name,
};
let reader = self.read().await;
let servers = match reader.servers() {
Ok(s) => s,
Err(e) => {
error!("Could not get servers: {e}");
return Err(AppError {
status_code: StatusCode::INTERNAL_SERVER_ERROR,
description: "Pairing failed".to_string(),
});
}
};
if servers.contains_key(&server.name) {
error!(
"Could not pair server with name {}, server with that name already exists.",
server.name
);
return Err(AppError {
status_code: StatusCode::BAD_REQUEST,
description: format!("Server with name {} already exists.", server.name),
});
}
let unique_id = match self.read().await.unique_id() {
Ok(u) => u,
Err(e) => {