use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
pub struct RoleIdentity {
pub oid: i64,
pub object_id: [u8; 16],
}
impl RoleIdentity {
pub const BOOTSTRAP: Self = Self {
oid: 10,
object_id: *b"UQA:role00000010",
};
pub fn is_valid(self) -> bool {
self.oid > 0 && u32::try_from(self.oid).is_ok() && self.object_id != [0; 16]
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct BoundAclEntry<Privileges> {
#[serde(deserialize_with = "Deserialize::deserialize")]
pub role: Option<RoleIdentity>,
pub grantor: RoleIdentity,
pub privileges: Privileges,
pub grant_options: Privileges,
}
#[cfg(test)]
mod tests;