2020-06-23 16:55:23 +00:00
|
|
|
//! # Group information
|
|
|
|
//!
|
|
|
|
//! Group visibility level
|
|
|
|
|
|
|
|
#[allow(non_camel_case_types)]
|
|
|
|
#[derive(Eq, PartialEq, Hash)]
|
|
|
|
pub enum GroupVisibilityLevel {
|
|
|
|
OPEN_GROUP,
|
|
|
|
PRIVATE_GROUP,
|
|
|
|
SECRETE_GROUP,
|
2020-06-24 11:34:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[allow(non_camel_case_types)]
|
2020-06-24 15:57:13 +00:00
|
|
|
#[derive(Eq, PartialEq, Hash, Debug, PartialOrd)]
|
2020-06-24 11:34:09 +00:00
|
|
|
pub enum GroupAccessLevel {
|
|
|
|
//Can not even know if the group exists or not
|
|
|
|
NO_ACCESS = 0,
|
|
|
|
|
|
|
|
//Access to the name of the group only
|
|
|
|
LIMITED_ACCESS = 1,
|
|
|
|
|
|
|
|
//Can see the posts of the group, but not a member of the group
|
|
|
|
VIEW_ACCESS = 2,
|
|
|
|
|
|
|
|
//Member access (same as view access but as member)
|
|
|
|
MEMBER_ACCESS = 3,
|
|
|
|
|
|
|
|
//Can create posts, even if posts creation is restricted
|
|
|
|
MODERATOR_ACCESS = 4,
|
|
|
|
|
|
|
|
//Can do everything
|
|
|
|
ADMIN_ACCESS = 5,
|
2020-06-24 15:57:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
use crate::data::group::GroupAccessLevel;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn access_level_coherence() {
|
|
|
|
assert!(GroupAccessLevel::NO_ACCESS < GroupAccessLevel::LIMITED_ACCESS);
|
|
|
|
assert!(GroupAccessLevel::LIMITED_ACCESS < GroupAccessLevel::VIEW_ACCESS);
|
|
|
|
assert!(GroupAccessLevel::VIEW_ACCESS < GroupAccessLevel::MEMBER_ACCESS);
|
|
|
|
assert!(GroupAccessLevel::MEMBER_ACCESS < GroupAccessLevel::MODERATOR_ACCESS);
|
|
|
|
assert!(GroupAccessLevel::MODERATOR_ACCESS < GroupAccessLevel::ADMIN_ACCESS);
|
|
|
|
}
|
2020-06-23 16:55:23 +00:00
|
|
|
}
|