|
|
@ -7,6 +7,7 @@ |
|
|
using System.ComponentModel; |
|
|
using System.ComponentModel; |
|
|
using System.Diagnostics.CodeAnalysis; |
|
|
using System.Diagnostics.CodeAnalysis; |
|
|
using System.Text.Json; |
|
|
using System.Text.Json; |
|
|
|
|
|
using Microsoft.EntityFrameworkCore.ChangeTracking; |
|
|
using Microsoft.EntityFrameworkCore.Metadata.Builders; |
|
|
using Microsoft.EntityFrameworkCore.Metadata.Builders; |
|
|
using Microsoft.IdentityModel.Tokens; |
|
|
using Microsoft.IdentityModel.Tokens; |
|
|
using OpenIddict.EntityFrameworkCore.Models; |
|
|
using OpenIddict.EntityFrameworkCore.Models; |
|
|
@ -67,7 +68,8 @@ public sealed class OpenIddictEntityFrameworkCoreApplicationConfiguration< |
|
|
builder.Property(static application => application.DisplayNames) |
|
|
builder.Property(static application => application.DisplayNames) |
|
|
.HasConversion( |
|
|
.HasConversion( |
|
|
static value => JsonSerializer.Serialize(value, OpenIddictSerializer.Default.IDictionaryStringString), |
|
|
static value => JsonSerializer.Serialize(value, OpenIddictSerializer.Default.IDictionaryStringString), |
|
|
static value => JsonSerializer.Deserialize(value, OpenIddictSerializer.Default.IDictionaryStringString)); |
|
|
static value => JsonSerializer.Deserialize(value, OpenIddictSerializer.Default.IDictionaryStringString), |
|
|
|
|
|
CreateDictionaryComparer<string>()); |
|
|
|
|
|
|
|
|
builder.HasKey(static application => application.Id); |
|
|
builder.HasKey(static application => application.Id); |
|
|
|
|
|
|
|
|
@ -88,12 +90,14 @@ public sealed class OpenIddictEntityFrameworkCoreApplicationConfiguration< |
|
|
builder.Property(static application => application.Properties) |
|
|
builder.Property(static application => application.Properties) |
|
|
.HasConversion( |
|
|
.HasConversion( |
|
|
static value => JsonSerializer.Serialize(value, OpenIddictSerializer.Default.IDictionaryStringJsonElement), |
|
|
static value => JsonSerializer.Serialize(value, OpenIddictSerializer.Default.IDictionaryStringJsonElement), |
|
|
static value => JsonSerializer.Deserialize(value, OpenIddictSerializer.Default.IDictionaryStringJsonElement)); |
|
|
static value => JsonSerializer.Deserialize(value, OpenIddictSerializer.Default.IDictionaryStringJsonElement), |
|
|
|
|
|
CreateDictionaryComparer<JsonElement>()); |
|
|
|
|
|
|
|
|
builder.Property(static application => application.Settings) |
|
|
builder.Property(static application => application.Settings) |
|
|
.HasConversion( |
|
|
.HasConversion( |
|
|
static value => JsonSerializer.Serialize(value, OpenIddictSerializer.Default.IDictionaryStringString), |
|
|
static value => JsonSerializer.Serialize(value, OpenIddictSerializer.Default.IDictionaryStringString), |
|
|
static value => JsonSerializer.Deserialize(value, OpenIddictSerializer.Default.IDictionaryStringString)); |
|
|
static value => JsonSerializer.Deserialize(value, OpenIddictSerializer.Default.IDictionaryStringString), |
|
|
|
|
|
CreateDictionaryComparer<string>()); |
|
|
|
|
|
|
|
|
builder.HasMany(static application => application.Tokens) |
|
|
builder.HasMany(static application => application.Tokens) |
|
|
.WithOne(static token => token.Application!) |
|
|
.WithOne(static token => token.Application!) |
|
|
@ -101,5 +105,10 @@ public sealed class OpenIddictEntityFrameworkCoreApplicationConfiguration< |
|
|
.IsRequired(required: false); |
|
|
.IsRequired(required: false); |
|
|
|
|
|
|
|
|
builder.ToTable("OpenIddictApplications"); |
|
|
builder.ToTable("OpenIddictApplications"); |
|
|
|
|
|
|
|
|
|
|
|
static ValueComparer CreateDictionaryComparer<TValue>() => new ValueComparer<IDictionary<string, TValue>>( |
|
|
|
|
|
static (left, right) => ReferenceEquals(left, right) || (left != null && right != null && left.SequenceEqual(right)), |
|
|
|
|
|
static value => value.Aggregate(0, static (hash, value) => HashCode.Combine(hash, value)), |
|
|
|
|
|
static value => value.ToDictionary()); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|