diff options
| author | Shadowghost <Ghost_of_Stone@web.de> | 2023-06-09 17:11:22 +0200 |
|---|---|---|
| committer | Shadowghost <Ghost_of_Stone@web.de> | 2023-07-07 08:50:37 +0200 |
| commit | 05d98fe24c594ae43de4cd9f54139f8b04324119 (patch) | |
| tree | cbea66216a973c6e9aafe2e6f661c1de4b58fe9a /Jellyfin.Api/WebSocketListeners/ActivityLogWebSocketListener.cs | |
| parent | 46a6755e65c9587fd1ae33ee4ffdb3cd406fd72b (diff) | |
Enforce permissions on websocket connections
Diffstat (limited to 'Jellyfin.Api/WebSocketListeners/ActivityLogWebSocketListener.cs')
| -rw-r--r-- | Jellyfin.Api/WebSocketListeners/ActivityLogWebSocketListener.cs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/Jellyfin.Api/WebSocketListeners/ActivityLogWebSocketListener.cs b/Jellyfin.Api/WebSocketListeners/ActivityLogWebSocketListener.cs index 4a5e0ecd4..33d391f29 100644 --- a/Jellyfin.Api/WebSocketListeners/ActivityLogWebSocketListener.cs +++ b/Jellyfin.Api/WebSocketListeners/ActivityLogWebSocketListener.cs @@ -1,6 +1,8 @@ using System; using System.Threading.Tasks; +using Jellyfin.Data.Enums; using Jellyfin.Data.Events; +using MediaBrowser.Controller.Authentication; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Activity; using MediaBrowser.Model.Session; @@ -9,7 +11,7 @@ using Microsoft.Extensions.Logging; namespace Jellyfin.Api.WebSocketListeners; /// <summary> -/// Class SessionInfoWebSocketListener. +/// Class ActivityLogWebSocketListener. /// </summary> public class ActivityLogWebSocketListener : BasePeriodicWebSocketListener<ActivityLogEntry[], WebSocketListenerState> { @@ -56,6 +58,16 @@ public class ActivityLogWebSocketListener : BasePeriodicWebSocketListener<Activi base.Dispose(dispose); } + private new void Start(WebSocketMessageInfo message) + { + if (!message.Connection.AuthorizationInfo.User.HasPermission(PermissionKind.IsAdministrator)) + { + throw new AuthenticationException("Only admin users can retrieve the activity log."); + } + + base.Start(message); + } + private async void OnEntryCreated(object? sender, GenericEventArgs<ActivityLogEntry> e) { await SendData(true).ConfigureAwait(false); |
