1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// SPDX-License-Identifier: MIT OR Apache-2.0
//! Granular permission system for entity resources.
//!
//! This module provides per-member, per-resource access control with three levels:
//! - [`AccessLevel::NotVisible`]: Resource is hidden from the member
//! - [`AccessLevel::ReadOnly`]: Member can view but not modify
//! - [`AccessLevel::Edit`]: Member has full access
//!
//! # Architecture
//!
//! Permissions are stored per-member within each entity using CRDT maps.
//! Each member has a role (e.g., "owner", "member", "viewer") that provides
//! default permissions, which can be overridden on a per-resource basis.
//!
//! # Example
//!
//! ```ignore
//! use communitas_bindings::permissions::{AccessLevel, ResourceType, role_defaults};
//!
//! // Get default permissions for a "member" role
//! let defaults = role_defaults("member");
//!
//! // Members can edit messages by default
//! assert_eq!(defaults.get(&ResourceType::Messages), Some(&AccessLevel::Edit));
//!
//! // But can only view settings
//! assert_eq!(defaults.get(&ResourceType::Settings), Some(&AccessLevel::ReadOnly));
//! ```
pub use AccessLevel;
pub use MemberPermissions;
pub use ResourceType;
pub use ;