From dafd1864104afe8d9bb8f20cf8bf40931a0417f1 Mon Sep 17 00:00:00 2001
From: elfalem <elfalem@gmail.com>
Date: Mon, 23 Sep 2024 18:52:18 -0400
Subject: [PATCH 1/2] Ensure user's own playlists are accessible regardless of
 allowed tags

---
 .../Data/SqliteItemRepository.cs                   | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index 60f5ee47ac..5598c81dcc 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -4203,6 +4203,15 @@ namespace Emby.Server.Implementations.Data
                                           OR (select CleanValue from ItemValues where ItemId=ParentId and Type=6 and CleanValue in ({includedTags})) is not null)
                                           """);
                     }
+
+                    // A playlist should be accessible to its owner regardless of allowed tags.
+                    else if (includeTypes.Length == 1 && includeTypes.FirstOrDefault() is BaseItemKind.Playlist)
+                    {
+                        whereClauses.Add($"""
+                                          ((select CleanValue from ItemValues where ItemId=Guid and Type=6 and CleanValue in ({includedTags})) is not null
+                                          OR data like @PlaylistOwnerUserId)
+                                          """);
+                    }
                     else
                     {
                         whereClauses.Add("((select CleanValue from ItemValues where ItemId=Guid and Type=6 and cleanvalue in (" + includedTags + ")) is not null)");
@@ -4214,6 +4223,11 @@ namespace Emby.Server.Implementations.Data
                     {
                         statement.TryBind(paramName + index, GetCleanValue(query.IncludeInheritedTags[index]));
                     }
+
+                    if (query.User != null)
+                    {
+                        statement.TryBind("@PlaylistOwnerUserId", $"""%"OwnerUserId":"{query.User.Id.ToString("N")}"%""");
+                    }
                 }
             }
 

From 8499be23ccfbe1b7eed6768d3ea634a6eed05217 Mon Sep 17 00:00:00 2001
From: elfalem <elfalem@users.noreply.github.com>
Date: Wed, 25 Sep 2024 20:05:00 -0400
Subject: [PATCH 2/2] Update SqliteItemRepository.cs - incorporate review
 suggestion

Co-authored-by: Bond-009 <bond.009@outlook.com>
---
 Emby.Server.Implementations/Data/SqliteItemRepository.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index 5598c81dcc..3da925f937 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -4224,7 +4224,7 @@ namespace Emby.Server.Implementations.Data
                         statement.TryBind(paramName + index, GetCleanValue(query.IncludeInheritedTags[index]));
                     }
 
-                    if (query.User != null)
+                    if (query.User is not null)
                     {
                         statement.TryBind("@PlaylistOwnerUserId", $"""%"OwnerUserId":"{query.User.Id.ToString("N")}"%""");
                     }