diff --git a/Jellyfin.Plugin.OidcAuth/Api/OidcAuthController.cs b/Jellyfin.Plugin.OidcAuth/Api/OidcAuthController.cs
index 5bbcb87..80962f1 100644
--- a/Jellyfin.Plugin.OidcAuth/Api/OidcAuthController.cs
+++ b/Jellyfin.Plugin.OidcAuth/Api/OidcAuthController.cs
@@ -143,9 +143,16 @@ public class OidcAuthController : ControllerBase
var adminRoles = SplitCsv(Config.AdminRoles);
if (adminRoles.Length > 0)
{
- var isAdmin = roles.Intersect(adminRoles, StringComparer.OrdinalIgnoreCase).Any();
- _logger.LogInformation("OIDC admin mapping for {Username}: admin roles [{AdminRoles}] => admin={IsAdmin}", username, Config.AdminRoles, isAdmin);
- user.SetPermission(PermissionKind.IsAdministrator, isAdmin);
+ var hasAdminRole = roles.Intersect(adminRoles, StringComparer.OrdinalIgnoreCase).Any();
+ _logger.LogInformation("OIDC admin mapping for {Username}: admin roles [{AdminRoles}] => hasAdminRole={HasAdminRole}", username, Config.AdminRoles, hasAdminRole);
+ if (hasAdminRole)
+ {
+ user.SetPermission(PermissionKind.IsAdministrator, true);
+ }
+ else if (Config.RevokeAdminWithoutRole)
+ {
+ user.SetPermission(PermissionKind.IsAdministrator, false);
+ }
}
await _userManager.UpdateUserAsync(user).ConfigureAwait(false);
diff --git a/Jellyfin.Plugin.OidcAuth/Configuration/PluginConfiguration.cs b/Jellyfin.Plugin.OidcAuth/Configuration/PluginConfiguration.cs
index fd2c321..521cc64 100644
--- a/Jellyfin.Plugin.OidcAuth/Configuration/PluginConfiguration.cs
+++ b/Jellyfin.Plugin.OidcAuth/Configuration/PluginConfiguration.cs
@@ -50,6 +50,12 @@ public class PluginConfiguration : BasePluginConfiguration
///
public string AllowedRoles { get; set; } = string.Empty;
+ ///
+ /// Gets or sets a value indicating whether a missing admin role also revokes an
+ /// existing administrator flag on OIDC login. Off by default: admin roles only grant.
+ ///
+ public bool RevokeAdminWithoutRole { get; set; }
+
///
/// Gets or sets a value indicating whether unknown users are created on first login.
///
diff --git a/Jellyfin.Plugin.OidcAuth/Configuration/configPage.html b/Jellyfin.Plugin.OidcAuth/Configuration/configPage.html
index f19b2f4..39445c0 100644
--- a/Jellyfin.Plugin.OidcAuth/Configuration/configPage.html
+++ b/Jellyfin.Plugin.OidcAuth/Configuration/configPage.html
@@ -51,6 +51,13 @@
Comma separated. Users with one of these roles become Jellyfin administrators. Empty = never touch admin flag.
+
+
+
+