From 54fb4c7a8a7c00b39f6a7b95c04196fb57a9d3e0 Mon Sep 17 00:00:00 2001 From: Amelia <77553571+Fesaa@users.noreply.github.com> Date: Mon, 30 Jun 2025 19:08:49 +0200 Subject: [PATCH] Use roles to sync Libraries and Age Rating for simplicty --- API/Extensions/StringExtensions.cs | 4 ++-- API/Services/OidcService.cs | 14 ++++++++------ API/Services/SettingsService.cs | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/API/Extensions/StringExtensions.cs b/API/Extensions/StringExtensions.cs index d5467482e..e62983c84 100644 --- a/API/Extensions/StringExtensions.cs +++ b/API/Extensions/StringExtensions.cs @@ -53,9 +53,9 @@ public static class StringExtensions return string.IsNullOrEmpty(value) ? defaultValue : double.Parse(value, CultureInfo.InvariantCulture); } - public static string? TrimPrefix(this string? value, string prefix) + public static string TrimPrefix(this string? value, string prefix) { - if (string.IsNullOrEmpty(value)) return value; + if (string.IsNullOrEmpty(value)) return string.Empty; if (!value.StartsWith(prefix)) return value; diff --git a/API/Services/OidcService.cs b/API/Services/OidcService.cs index 42ae53a7c..6f1fac98b 100644 --- a/API/Services/OidcService.cs +++ b/API/Services/OidcService.cs @@ -44,8 +44,8 @@ public interface IOidcService public class OidcService(ILogger logger, UserManager userManager, IUnitOfWork unitOfWork, IMapper mapper, IAccountService accountService): IOidcService { - private const string LibraryAccessClaim = "library"; - private const string AgeRatingClaim = "AgeRating"; + private const string LibraryAccessPrefix = "library-"; + private const string AgeRatingPrefix = "age-rating-"; public async Task LoginOrCreate(ClaimsPrincipal principal) { @@ -175,8 +175,9 @@ public class OidcService(ILogger logger, UserManager userM private async Task SyncLibraries(ClaimsPrincipal claimsPrincipal, AppUser user) { var libraryAccess = claimsPrincipal - .FindAll(LibraryAccessClaim) - .Select(r => r.Value) + .FindAll(ClaimTypes.Role) + .Where(r => r.Value.StartsWith(LibraryAccessPrefix)) + .Select(r => r.Value.TrimPrefix(LibraryAccessPrefix)) .ToList(); if (libraryAccess.Count == 0) return; @@ -191,8 +192,9 @@ public class OidcService(ILogger logger, UserManager userM { var ageRatings = claimsPrincipal - .FindAll(AgeRatingClaim) - .Select(r => r.Value) + .FindAll(ClaimTypes.Role) + .Where(r => r.Value.StartsWith(AgeRatingPrefix)) + .Select(r => r.Value.TrimPrefix(AgeRatingPrefix)) .ToList(); if (ageRatings.Count == 0) return; diff --git a/API/Services/SettingsService.cs b/API/Services/SettingsService.cs index adb3672fe..ebcb987c3 100644 --- a/API/Services/SettingsService.cs +++ b/API/Services/SettingsService.cs @@ -373,7 +373,7 @@ public class SettingsService : ISettingsService } catch (Exception e) { - _logger.LogError(e, "OpenIdConfiguration failed: {Reason}", e.Message); + _logger.LogTrace(e, "OpenIdConfiguration failed: {Reason}", e.Message); return false; } }