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.
+
+ +
+