Make config register_configuration use Rights bitflag object

This commit is contained in:
Quat3rnion 2024-06-02 18:11:39 -04:00
parent c44521320d
commit 7b7294433b
2 changed files with 12 additions and 4 deletions

View File

@ -4,9 +4,9 @@
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::types::config::types::subconfigs::register::{ use crate::types::{config::types::subconfigs::register::{
DateOfBirthConfiguration, PasswordConfiguration, RegistrationEmailConfiguration, DateOfBirthConfiguration, PasswordConfiguration, RegistrationEmailConfiguration,
}; }, Rights};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
@ -22,7 +22,7 @@ pub struct RegisterConfiguration {
pub allow_multiple_accounts: bool, pub allow_multiple_accounts: bool,
pub block_proxies: bool, pub block_proxies: bool,
pub incrementing_discriminators: bool, pub incrementing_discriminators: bool,
pub default_rights: String, pub default_rights: Rights,
} }
impl Default for RegisterConfiguration { impl Default for RegisterConfiguration {
@ -39,7 +39,7 @@ impl Default for RegisterConfiguration {
allow_multiple_accounts: true, allow_multiple_accounts: true,
block_proxies: true, block_proxies: true,
incrementing_discriminators: false, incrementing_discriminators: false,
default_rights: String::from("875069521787904"), default_rights: Rights::from_bits(648540060672).expect("failed to parse default_rights"),
} }
} }
} }

View File

@ -3,6 +3,7 @@
// file, You can obtain one at http://mozilla.org/MPL/2.0/. // file, You can obtain one at http://mozilla.org/MPL/2.0/.
use bitflags::bitflags; use bitflags::bitflags;
use serde::{Deserialize, Serialize};
bitflags! { bitflags! {
/// Rights are instance-wide, per-user permissions for everything you may perform on the instance, /// Rights are instance-wide, per-user permissions for everything you may perform on the instance,
@ -14,6 +15,7 @@ bitflags! {
/// ///
/// # Reference /// # Reference
/// See <https://docs.spacebar.chat/setup/server/security/rights/> /// See <https://docs.spacebar.chat/setup/server/security/rights/>
#[derive(Debug, Clone, Copy, Eq, PartialEq, Serialize, Deserialize)]
pub struct Rights: u64 { pub struct Rights: u64 {
/// All rights /// All rights
const OPERATOR = 1 << 0; const OPERATOR = 1 << 0;
@ -151,6 +153,12 @@ impl Rights {
} }
} }
impl Default for Rights {
fn default() -> Self {
Self::empty()
}
}
#[allow(dead_code)] // FIXME: Remove this when we use this #[allow(dead_code)] // FIXME: Remove this when we use this
fn all_rights() -> Rights { fn all_rights() -> Rights {
Rights::OPERATOR Rights::OPERATOR