add: audit log, reports
add: theme preference setting
This commit is contained in:
parent
b2df2739a7
commit
d3d0c41334
38 changed files with 925 additions and 169 deletions
|
@ -25,6 +25,19 @@ pub struct User {
|
|||
pub following_count: usize,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
pub enum ThemePreference {
|
||||
Auto,
|
||||
Dark,
|
||||
Light,
|
||||
}
|
||||
|
||||
impl Default for ThemePreference {
|
||||
fn default() -> Self {
|
||||
Self::Auto
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
pub struct UserSettings {
|
||||
#[serde(default)]
|
||||
|
@ -35,6 +48,8 @@ pub struct UserSettings {
|
|||
pub private_profile: bool,
|
||||
#[serde(default)]
|
||||
pub private_communities: bool,
|
||||
#[serde(default)]
|
||||
pub theme_preference: ThemePreference,
|
||||
}
|
||||
|
||||
impl Default for UserSettings {
|
||||
|
@ -44,6 +59,7 @@ impl Default for UserSettings {
|
|||
biography: String::new(),
|
||||
private_profile: false,
|
||||
private_communities: false,
|
||||
theme_preference: ThemePreference::default(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -88,6 +104,15 @@ impl User {
|
|||
}
|
||||
}
|
||||
|
||||
/// Banned user profile.
|
||||
pub fn banned() -> Self {
|
||||
Self {
|
||||
username: "<banned>".to_string(),
|
||||
id: 0,
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
/// Create a new token
|
||||
///
|
||||
/// # Returns
|
||||
|
|
|
@ -25,6 +25,7 @@ bitflags! {
|
|||
const MANAGE_VERIFIED = 1 << 14;
|
||||
const MANAGE_AUDITLOG = 1 << 15;
|
||||
const MANAGE_REPORTS = 1 << 16;
|
||||
const BANNED = 1 << 17;
|
||||
|
||||
const _ = !0;
|
||||
}
|
||||
|
@ -101,6 +102,9 @@ impl FinePermission {
|
|||
if (self & FinePermission::ADMINISTRATOR) == FinePermission::ADMINISTRATOR {
|
||||
// has administrator permission, meaning everything else is automatically true
|
||||
return true;
|
||||
} else if self.check_banned() {
|
||||
// has banned permission, meaning everything else is automatically false
|
||||
return false;
|
||||
}
|
||||
|
||||
(self & permission) == permission
|
||||
|
@ -118,7 +122,17 @@ impl FinePermission {
|
|||
|
||||
/// Check if the given [`FinePermission`] qualifies as "Manager" status.
|
||||
pub fn check_manager(self) -> bool {
|
||||
self.check_helper() && self.check(FinePermission::ADMINISTRATOR)
|
||||
self.check_helper() && self.check(FinePermission::MANAGE_USERS)
|
||||
}
|
||||
|
||||
/// Check if the given [`FinePermission`] qualifies as "Administrator" status.
|
||||
pub fn check_admin(self) -> bool {
|
||||
self.check_manager() && self.check(FinePermission::ADMINISTRATOR)
|
||||
}
|
||||
|
||||
/// Check if the given [`FinePermission`] qualifies as "Banned" status.
|
||||
pub fn check_banned(self) -> bool {
|
||||
(self & FinePermission::BANNED) == FinePermission::BANNED
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,8 +4,12 @@ use tetratto_shared::{snow::AlmostSnowflake, unix_epoch_timestamp};
|
|||
/// All of the items which support reactions.
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub enum AssetType {
|
||||
#[serde(alias = "community")]
|
||||
Community,
|
||||
#[serde(alias = "post")]
|
||||
Post,
|
||||
#[serde(alias = "user")]
|
||||
User,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue