Add command check-auth

This commit is contained in:
2025-11-29 19:25:33 +09:00
parent 03ddf0ac8a
commit 865b24884e
8 changed files with 215 additions and 13 deletions
+33
View File
@@ -0,0 +1,33 @@
use crate::{
core::{common::UnixUser, protocol::CheckAuthorizationError, types::DbOrUser},
server::input_sanitization::{validate_name, validate_ownership_by_unix_user},
};
pub async fn check_authorization(
dbs_or_users: Vec<DbOrUser>,
unix_user: &UnixUser,
) -> std::collections::BTreeMap<DbOrUser, Result<(), CheckAuthorizationError>> {
let mut results = std::collections::BTreeMap::new();
for db_or_user in dbs_or_users {
if let Err(err) = validate_name(db_or_user.name()) {
results.insert(
db_or_user.clone(),
Err(CheckAuthorizationError::SanitizationError(err)),
);
continue;
}
if let Err(err) = validate_ownership_by_unix_user(db_or_user.name(), unix_user) {
results.insert(
db_or_user.clone(),
Err(CheckAuthorizationError::OwnershipError(err)),
);
continue;
}
results.insert(db_or_user.clone(), Ok(()));
}
results
}