diff --git a/src/access.rs b/src/access.rs index ffc9887..60e0637 100644 --- a/src/access.rs +++ b/src/access.rs @@ -88,6 +88,16 @@ impl PermissionsProvider { } } + fn get_perm(&self, txn: &T, permID: PermIdentifier) -> Result> { + match txn.get(self.permdb, &permID.to_ne_bytes()) { + Ok(bytes) => { + Ok(Some(flexbuffers::from_slice(bytes)?)) + }, + Err(lmdb::Error::NotFound) => { Ok(None) }, + Err(e) => { Err(e.into()) } + } + } + fn put_role(&self, txn: &mut RwTransaction, roleID: RoleIdentifier, role: Role) -> Result<()> { let bytes = flexbuffers::to_vec(role)?; txn.put(self.roledb, &roleID.to_ne_bytes(), &bytes, lmdb::WriteFlags::empty())?; @@ -101,6 +111,13 @@ impl PermissionsProvider { Ok(()) } + + fn put_perm(&self, txn: &mut RwTransaction, permID: PermIdentifier, perm: Perm) -> Result<()> { + let bytes = flexbuffers::to_vec(perm)?; + txn.put(self.permdb, &permID.to_ne_bytes(), &bytes, lmdb::WriteFlags::empty())?; + + Ok(()) + } } /// This line documents init @@ -157,6 +174,6 @@ struct Role { /// Permissions are rather simple flags. A person can have or not have a permission, dictated by /// its roles and the permissions assigned to those roles. #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)] -struct Permission { +struct Perm { name: String, }