aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-12-11 01:19:51 +0100
committermetamuffin <metamuffin@disroot.org>2023-12-11 01:19:51 +0100
commit36d7fb2790774c53415c96f8c6955be42bad952f (patch)
tree4481dac53a6d0896e90ff72b9b68665e59e159db /common
parent767d6c4c7b8518198b0343781128027051b94ae5 (diff)
downloadjellything-36d7fb2790774c53415c96f8c6955be42bad952f.tar
jellything-36d7fb2790774c53415c96f8c6955be42bad952f.tar.bz2
jellything-36d7fb2790774c53415c96f8c6955be42bad952f.tar.zst
(partially) fix security problem with federated session
Diffstat (limited to 'common')
-rw-r--r--common/src/user.rs24
1 files changed, 17 insertions, 7 deletions
diff --git a/common/src/user.rs b/common/src/user.rs
index ae9a757..f33ca71 100644
--- a/common/src/user.rs
+++ b/common/src/user.rs
@@ -38,18 +38,26 @@ pub struct PermissionSet(pub HashMap<UserPermission, bool>);
#[serde(rename_all = "snake_case")]
pub enum UserPermission {
Admin,
+ // ManageUsers,
+ // GenerateInvite,
+ ManageSelf,
+
+ AccessNode(String),
+ StreamFormat(StreamFormat),
Transcode,
- ManageUsers,
FederatedContent,
- GenerateInvite,
- StreamFormat(StreamFormat),
- AccessNode(String),
}
impl UserPermission {
pub const ALL_ENUMERABLE: &'static [UserPermission] = {
use UserPermission::*;
- &[Admin, Transcode, StreamFormat(user::StreamFormat::Original)]
+ &[
+ Admin,
+ Transcode,
+ ManageSelf,
+ FederatedContent,
+ StreamFormat(user::StreamFormat::Original),
+ ]
};
pub fn default_value(&self) -> bool {
use user::StreamFormat::*;
@@ -57,6 +65,7 @@ impl UserPermission {
matches!(
self,
Transcode
+ | ManageSelf
| FederatedContent
| StreamFormat(Jhls | HlsMaster | HlsVariant | Matroska | Segment | Webvtt)
)
@@ -66,6 +75,7 @@ impl UserPermission {
impl Display for UserPermission {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(&match self {
+ UserPermission::ManageSelf => format!("manage self (password, display name, etc.)"),
UserPermission::FederatedContent => format!("access to federated content"),
UserPermission::Admin => format!("administrative rights"),
UserPermission::StreamFormat(StreamFormat::Original) => {
@@ -78,8 +88,8 @@ impl Display for UserPermission {
format!("downloading media via {x:?}")
}
UserPermission::Transcode => format!("transcoding"),
- UserPermission::ManageUsers => format!("management of all users"),
- UserPermission::GenerateInvite => format!("inviting new users"),
+ // UserPermission::ManageUsers => format!("management of all users"),
+ // UserPermission::GenerateInvite => format!("inviting new users"),
UserPermission::AccessNode(s) => format!("access to library node {s:?}"),
})
}