aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/routes')
-rw-r--r--server/src/routes/stream.rs14
1 files changed, 11 insertions, 3 deletions
diff --git a/server/src/routes/stream.rs b/server/src/routes/stream.rs
index b1248ba..0569903 100644
--- a/server/src/routes/stream.rs
+++ b/server/src/routes/stream.rs
@@ -6,8 +6,11 @@
use super::ui::{account::session::Session, error::MyError};
use crate::{database::Database, federation::Federation};
use anyhow::{anyhow, Result};
-use jellybase::{permission::NodePermissionExt, CONF};
-use jellycommon::{stream::StreamSpec, MediaSource};
+use jellybase::{
+ permission::{NodePermissionExt, PermissionSetExt},
+ CONF,
+};
+use jellycommon::{stream::StreamSpec, user::UserPermission, MediaSource};
use log::{info, warn};
use rocket::{
get, head,
@@ -55,6 +58,11 @@ pub async fn r_stream(
.ok_or(anyhow!("item does not contain media"))?;
if let MediaSource::Remote { host, remote_id } = source {
+ session
+ .user
+ .permissions
+ .assert(&UserPermission::FederatedContent)?;
+
let (username, password, _) = CONF
.remote_credentials
.get(host)
@@ -91,7 +99,7 @@ pub async fn r_stream(
let head = jellystream::stream_head(&spec);
- match jellystream::stream(node, spec, urange).await {
+ match jellystream::stream(node, spec, urange, &session.user.permissions).await {
Ok(stream) => Ok(Either::Left(StreamResponse {
stream,
range,