use serde::{Deserialize, Serialize}; use std::collections::HashMap; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct User { pub name: String, pub display_name: String, pub password: Vec, pub admin: bool, pub permissions: PermissionSet, } #[derive(Debug, Clone, Serialize, Deserialize, Default)] pub struct PermissionSet(pub HashMap); #[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)] #[serde(rename_all = "snake_case")] pub enum UserPermission { OriginalStream, Transcode, ManageUsers, GenerateInvite, } impl UserPermission { pub fn default_value(&self) -> bool { use UserPermission::*; matches!(self, Transcode) } }