diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/src/routes/stream.rs | 14 |
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, |