use errors::AppError;
use ffi::mutable_data::permissions::USER_ANYONE;
use ffi::object_cache::{MDataPermissionsHandle, SignPubKeyHandle};
use object_cache::ObjectCache;
use routing::{PermissionSet, User};
use std::collections::BTreeMap;
pub fn get_user(object_cache: &ObjectCache, handle: SignPubKeyHandle) -> Result<User, AppError> {
let user = if handle != USER_ANYONE {
let sign_key = object_cache.get_pub_sign_key(handle)?;
User::Key(*sign_key)
} else {
User::Anyone
};
Ok(user)
}
pub fn insert_permissions(
object_cache: &ObjectCache,
permissions: BTreeMap<User, PermissionSet>,
) -> MDataPermissionsHandle {
object_cache.insert_mdata_permissions(permissions)
}
pub fn get_permissions(
object_cache: &ObjectCache,
handle: MDataPermissionsHandle,
) -> Result<BTreeMap<User, PermissionSet>, AppError> {
let output = object_cache.get_mdata_permissions(handle)?.clone();
Ok(output)
}