From 95e43ac88a322251a5e5a7d529b7b20a511978fd Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 4 Oct 2023 23:32:24 +0200 Subject: more permissions --- common/src/user.rs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'common/src/user.rs') diff --git a/common/src/user.rs b/common/src/user.rs index b049346..3c1c5b0 100644 --- a/common/src/user.rs +++ b/common/src/user.rs @@ -1,3 +1,4 @@ +use crate::{stream::StreamFormat, user}; use serde::{Deserialize, Serialize}; use std::{collections::HashMap, fmt::Display}; @@ -17,22 +18,26 @@ pub struct PermissionSet(pub HashMap); #[serde(rename_all = "snake_case")] pub enum UserPermission { Admin, - OriginalStream, Transcode, ManageUsers, FederatedContent, GenerateInvite, + StreamFormat(StreamFormat), AccessNode(String), } impl UserPermission { pub const ALL_ENUMERABLE: &'static [UserPermission] = { use UserPermission::*; - &[Admin, OriginalStream, Transcode] + &[Admin, Transcode, StreamFormat(user::StreamFormat::Original)] }; pub fn default_value(&self) -> bool { + use user::StreamFormat::*; use UserPermission::*; - matches!(self, Transcode) + matches!( + self, + Transcode | StreamFormat(Jhls | HlsMaster | HlsVariant | Matroska | Segment) + ) } } @@ -41,7 +46,15 @@ impl Display for UserPermission { f.write_str(&match self { UserPermission::FederatedContent => format!("access to federated content"), UserPermission::Admin => format!("administrative rights"), - UserPermission::OriginalStream => format!("download of the original media"), + UserPermission::StreamFormat(StreamFormat::Original) => { + format!("downloading the original media") + } + UserPermission::StreamFormat(StreamFormat::Matroska) => { + format!("downloading a remuxed WebM/Matroska version of the media ") + } + UserPermission::StreamFormat(x) => { + format!("downloading media via {x:?}") + } UserPermission::Transcode => format!("transcoding"), UserPermission::ManageUsers => format!("management of all users"), UserPermission::GenerateInvite => format!("inviting new users"), -- cgit v1.2.3-70-g09d2