aboutsummaryrefslogtreecommitdiff
path: root/common/src
diff options
context:
space:
mode:
Diffstat (limited to 'common/src')
-rw-r--r--common/src/config.rs3
-rw-r--r--common/src/lib.rs3
-rw-r--r--common/src/user.rs30
3 files changed, 35 insertions, 1 deletions
diff --git a/common/src/config.rs b/common/src/config.rs
index da1cfb5..467dc02 100644
--- a/common/src/config.rs
+++ b/common/src/config.rs
@@ -7,6 +7,8 @@
use serde::{Deserialize, Serialize};
use std::{collections::HashMap, path::PathBuf};
+use crate::user::PermissionSet;
+
#[rustfmt::skip]
#[derive(Debug, Deserialize, Serialize, Default)]
pub struct GlobalConfig {
@@ -22,6 +24,7 @@ pub struct GlobalConfig {
#[serde(default)] pub session_key: Option<String>,
#[serde(default = "default::login_expire")] pub login_expire: i64,
#[serde(default)] pub remote_credentials: HashMap<String, (String, String, bool)>,
+ #[serde(default)] pub default_permission_set: PermissionSet,
}
#[rustfmt::skip]
diff --git a/common/src/lib.rs b/common/src/lib.rs
index ec6e0df..c842924 100644
--- a/common/src/lib.rs
+++ b/common/src/lib.rs
@@ -6,8 +6,9 @@
pub mod config;
pub mod helpers;
pub mod r#impl;
-pub mod stream;
pub mod seek_index;
+pub mod stream;
+pub mod user;
#[cfg(feature = "rocket")]
use rocket::{FromFormField, UriDisplayQuery};
diff --git a/common/src/user.rs b/common/src/user.rs
new file mode 100644
index 0000000..543162c
--- /dev/null
+++ b/common/src/user.rs
@@ -0,0 +1,30 @@
+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<u8>,
+ pub admin: bool,
+ pub permissions: PermissionSet,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize, Default)]
+pub struct PermissionSet(pub HashMap<UserPermission, bool>);
+
+#[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)
+ }
+}