use crate::model::prelude::*;
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Hash)]
pub enum Role {
#[serde(rename = "user")]
User,
#[serde(rename = "anon")]
Anon,
#[serde(rename = "bot")]
Bot,
#[serde(rename = "sysop")]
Sysop,
#[serde(rename = "admin")]
Admin,
#[serde(rename = "mod")]
Mod,
#[serde(rename = "halfmod")]
Halfmod,
#[serde(rename = "banned")]
Banned,
#[serde(rename = "hidden")]
Hidden,
}
impl Role {
pub fn is_normal_user(&self) -> bool {
matches!(self, Role::User)
}
pub fn is_anon(&self) -> bool {
matches!(self, Role::Anon)
}
pub fn is_bot(&self) -> bool {
matches!(self, Role::Bot)
}
pub fn is_sysop(&self) -> bool {
matches!(self, Role::Sysop)
}
pub fn is_admin(&self) -> bool {
matches!(self, Role::Admin)
}
pub fn is_mod(&self) -> bool {
matches!(self, Role::Mod)
}
pub fn is_halfmod(&self) -> bool {
matches!(self, Role::Halfmod)
}
pub fn is_banned(&self) -> bool {
matches!(self, Role::Banned)
}
pub fn is_hidden(&self) -> bool {
matches!(self, Role::Hidden)
}
}
impl AsRef<Role> for Role {
fn as_ref(&self) -> &Self {
self
}
}
impl fmt::Display for Role {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Role::User => write!(f, "User"),
Role::Anon => write!(f, "Anonymous"),
Role::Bot => write!(f, "Bot"),
Role::Sysop => write!(f, "SYSOP"),
Role::Admin => write!(f, "Administrator"),
Role::Mod => write!(f, "Moderator"),
Role::Halfmod => write!(f, "Community moderator"),
Role::Banned => write!(f, "Banned user"),
Role::Hidden => write!(f, "Hidden user"),
}
}
}