use std::{
collections::{HashMap, HashSet},
sync::Arc,
};
use cosmian_kmip::{kmip_0::kmip_types::State, kmip_2_1::KmipOperation};
use cosmian_kms_interfaces::SessionParams;
use super::Database;
use crate::error::DbResult;
impl Database {
pub async fn list_user_operations_granted(
&self,
user: &str,
params: Option<Arc<dyn SessionParams>>,
) -> DbResult<HashMap<String, (String, State, HashSet<KmipOperation>)>> {
Ok(self
.permissions
.list_user_operations_granted(user, params)
.await?)
}
pub async fn list_object_operations_granted(
&self,
uid: &str,
params: Option<Arc<dyn SessionParams>>,
) -> DbResult<HashMap<String, HashSet<KmipOperation>>> {
Ok(self
.permissions
.list_object_operations_granted(uid, params)
.await?)
}
pub async fn grant_operations(
&self,
uid: &str,
user: &str,
operations: HashSet<KmipOperation>,
params: Option<Arc<dyn SessionParams>>,
) -> DbResult<()> {
Ok(self
.permissions
.grant_operations(uid, user, operations, params)
.await?)
}
pub async fn remove_operations(
&self,
uid: &str,
user: &str,
operations: HashSet<KmipOperation>,
params: Option<Arc<dyn SessionParams>>,
) -> DbResult<()> {
Ok(self
.permissions
.remove_operations(uid, user, operations, params)
.await?)
}
pub async fn list_user_operations_on_object(
&self,
uid: &str,
user: &str,
no_inherited_access: bool,
params: Option<Arc<dyn SessionParams>>,
) -> DbResult<HashSet<KmipOperation>> {
Ok(self
.permissions
.list_user_operations_on_object(uid, user, no_inherited_access, params)
.await?)
}
}