Explorar o código

fixes #683 - Support disabling playback per user

Luke Pulverenti %!s(int64=11) %!d(string=hai) anos
pai
achega
4ce43ce019

+ 7 - 0
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -1007,6 +1007,13 @@ namespace MediaBrowser.Api.Playback
                 throw new InvalidOperationException("You asked for a debug error, you got one.");
             }
 
+            var user = AuthorizationRequestFilterAttribute.GetCurrentUser(Request, UserManager);
+
+            if (user != null && !user.Configuration.EnableMediaPlayback)
+            {
+                throw new ArgumentException(string.Format("{0} is not allowed to play media.", user.Name));
+            }
+
             var url = Request.PathInfo;
 
             if (!request.AudioCodec.HasValue)

+ 3 - 0
MediaBrowser.Model/Configuration/UserConfiguration.cs

@@ -68,6 +68,8 @@ namespace MediaBrowser.Model.Configuration
         public bool BlockUnratedBooks { get; set; }
 
         public bool EnableLiveTvManagement { get; set; }
+
+        public bool EnableMediaPlayback { get; set; }
         
         /// <summary>
         /// Initializes a new instance of the <see cref="UserConfiguration" /> class.
@@ -79,6 +81,7 @@ namespace MediaBrowser.Model.Configuration
             BlockNotRated = false;
 
             EnableLiveTvManagement = true;
+            EnableMediaPlayback = true;
         }
     }
 }

+ 10 - 0
MediaBrowser.Server.Implementations/Session/SessionManager.cs

@@ -604,6 +604,16 @@ namespace MediaBrowser.Server.Implementations.Session
         {
             var session = GetSessionForRemoteControl(sessionId);
 
+            if (session.UserId.HasValue)
+            {
+                var user = _userManager.GetUserById(session.UserId.Value);
+
+                if (!user.Configuration.EnableMediaPlayback)
+                {
+                    throw new ArgumentException(string.Format("{0} is not allowed to play media.", user.Name));
+                }
+            }
+
             var items = command.ItemIds.Select(i => _libraryManager.GetItemById(new Guid(i)))
                 .ToList();