// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System.Collections.Immutable; using System.Globalization; using System.Text.Json; using Microsoft.IdentityModel.Tokens; using OpenIddict.Abstractions; namespace Squidex.Domain.Users.InMemory; public sealed class ImmutableApplication { public string Id { get; } public string? ClientId { get; } public string? ClientSecret { get; } public string? ClientType { get; } public string? ConsentType { get; } public string? DisplayName { get; } public string? ApplicationType { get; } public JsonWebKeySet? JsonWebKeySet { get; } public ImmutableDictionary DisplayNames { get; } public ImmutableArray Permissions { get; } public ImmutableArray PostLogoutRedirectUris { get; } public ImmutableArray RedirectUris { get; } public ImmutableArray Requirements { get; } public ImmutableDictionary Properties { get; } public ImmutableDictionary Settings { get; } public ImmutableApplication(string id, OpenIddictApplicationDescriptor descriptor) { Id = id; ApplicationType = descriptor.ApplicationType; ClientId = descriptor.ClientId; ClientSecret = descriptor.ClientSecret; ClientType = descriptor.ClientType; ConsentType = descriptor.ConsentType; DisplayName = descriptor.DisplayName; DisplayNames = descriptor.DisplayNames.ToImmutableDictionary(); JsonWebKeySet = descriptor.JsonWebKeySet; Permissions = descriptor.Permissions.ToImmutableArray(); PostLogoutRedirectUris = descriptor.PostLogoutRedirectUris.Select(x => x.ToString()).ToImmutableArray(); Properties = descriptor.Properties.ToImmutableDictionary(); RedirectUris = descriptor.RedirectUris.Select(x => x.ToString()).ToImmutableArray(); Requirements = descriptor.Requirements.ToImmutableArray(); Settings = descriptor.Settings.ToImmutableDictionary(); } }