Defer standard authentication checks to DefaultAuthorizationHandler

This commit is contained in:
Bill Thornton 2024-05-29 14:35:41 -04:00
parent d0336cd67e
commit 8fa7ff647a
2 changed files with 12 additions and 19 deletions

View File

@ -32,16 +32,8 @@ namespace Jellyfin.Api.Auth.FirstTimeSetupPolicy
{ {
context.Fail(); context.Fail();
} }
else if (!requirement.RequireAdmin && context.User.IsInRole(UserRoles.Guest))
{
context.Fail();
}
else
{
// Any user-specific checks are handled in the DefaultAuthorizationHandler.
context.Succeed(requirement);
}
// Any user-specific checks are handled in the DefaultAuthorizationHandler.
return Task.CompletedTask; return Task.CompletedTask;
} }
} }

View File

@ -52,10 +52,10 @@ namespace Jellyfin.Api.Tests.Auth.FirstTimeSetupPolicy
} }
[Theory] [Theory]
[InlineData(UserRoles.Administrator, true)] [InlineData(UserRoles.Administrator, false)]
[InlineData(UserRoles.Guest, false)] [InlineData(UserRoles.Guest, true)]
[InlineData(UserRoles.User, false)] [InlineData(UserRoles.User, true)]
public async Task ShouldRequireAdministratorIfStartupWizardComplete(string userRole, bool shouldSucceed) public async Task ShouldRequireAdministratorIfStartupWizardComplete(string userRole, bool shouldFail)
{ {
TestHelpers.SetupConfigurationManager(_configurationManagerMock, true); TestHelpers.SetupConfigurationManager(_configurationManagerMock, true);
var claims = TestHelpers.SetupUser( var claims = TestHelpers.SetupUser(
@ -66,14 +66,14 @@ namespace Jellyfin.Api.Tests.Auth.FirstTimeSetupPolicy
var context = new AuthorizationHandlerContext(_requirements, claims, null); var context = new AuthorizationHandlerContext(_requirements, claims, null);
await _firstTimeSetupHandler.HandleAsync(context); await _firstTimeSetupHandler.HandleAsync(context);
Assert.Equal(shouldSucceed, context.HasSucceeded); Assert.Equal(shouldFail, context.HasFailed);
} }
[Theory] [Theory]
[InlineData(UserRoles.Administrator, true)] [InlineData(UserRoles.Administrator)]
[InlineData(UserRoles.Guest, false)] [InlineData(UserRoles.Guest)]
[InlineData(UserRoles.User, true)] [InlineData(UserRoles.User)]
public async Task ShouldRequireUserIfNotRequiresAdmin(string userRole, bool shouldSucceed) public async Task ShouldDeferIfNotRequiresAdmin(string userRole)
{ {
TestHelpers.SetupConfigurationManager(_configurationManagerMock, true); TestHelpers.SetupConfigurationManager(_configurationManagerMock, true);
var claims = TestHelpers.SetupUser( var claims = TestHelpers.SetupUser(
@ -87,7 +87,8 @@ namespace Jellyfin.Api.Tests.Auth.FirstTimeSetupPolicy
null); null);
await _firstTimeSetupHandler.HandleAsync(context); await _firstTimeSetupHandler.HandleAsync(context);
Assert.Equal(shouldSucceed, context.HasSucceeded); Assert.False(context.HasSucceeded);
Assert.False(context.HasFailed);
} }
[Fact] [Fact]