11using IdentityServer4 . Extensions ;
22using IdentityServer4 . Models ;
33using IdentityServer4 . Stores ;
4+ using Microsoft . Extensions . Logging ;
45using OpenActive . FakeDatabase . NET ;
56using System . Collections . Generic ;
67using System . Linq ;
@@ -10,11 +11,21 @@ namespace IdentityServer
1011{
1112 public class AcmePersistedGrantStore : IPersistedGrantStore
1213 {
14+ protected readonly ILogger _logger ;
15+
16+ public AcmePersistedGrantStore ( ILogger < AcmePersistedGrantStore > logger )
17+ {
18+ _logger = logger ;
19+ }
20+
1321 public async Task < IEnumerable < PersistedGrant > > GetAllAsync ( PersistedGrantFilter filter )
1422 {
1523 filter . Validate ( ) ;
1624
1725 var grants = await FakeBookingSystem . Database . GetAllGrants ( filter . SubjectId , filter . SessionId , filter . ClientId , filter . Type ) ;
26+
27+ _logger . LogDebug ( "{persistedGrantCount} persisted grants found for {@filter}" , grants . Count , filter ) ;
28+
1829 var persistedGrants = grants . Select ( grant => new PersistedGrant
1930 {
2031 Key = grant . Key ,
@@ -23,6 +34,7 @@ public async Task<IEnumerable<PersistedGrant>> GetAllAsync(PersistedGrantFilter
2334 SessionId = grant . SessionId ,
2435 ClientId = grant . ClientId ,
2536 CreationTime = grant . CreationTime ,
37+ ConsumedTime = grant . ConsumedTime ,
2638 Expiration = grant . Expiration ,
2739 Data = grant . Data
2840 } ) . ToList ( ) ;
@@ -34,6 +46,8 @@ public async Task<PersistedGrant> GetAsync(string key)
3446 {
3547 var grant = await FakeBookingSystem . Database . GetGrant ( key ) ;
3648
49+ _logger . LogDebug ( "{persistedGrantKey} found in database: {persistedGrantKeyFound}" , key , grant != null ) ;
50+
3751 return grant != null ? new PersistedGrant
3852 {
3953 Key = grant . Key ,
@@ -42,6 +56,7 @@ public async Task<PersistedGrant> GetAsync(string key)
4256 SessionId = grant . SessionId ,
4357 ClientId = grant . ClientId ,
4458 CreationTime = grant . CreationTime ,
59+ ConsumedTime = grant . ConsumedTime ,
4560 Expiration = grant . Expiration ,
4661 Data = grant . Data
4762 } : null ;
@@ -51,17 +66,28 @@ public async Task RemoveAllAsync(PersistedGrantFilter filter)
5166 {
5267 filter . Validate ( ) ;
5368
69+ _logger . LogDebug ( "removing all persisted grants from database for {@filter}" , filter ) ;
70+
5471 await FakeBookingSystem . Database . RemoveAllGrants ( filter . SubjectId , filter . SessionId , filter . ClientId , filter . Type ) ;
5572 }
5673
5774 public async Task RemoveAsync ( string key )
5875 {
76+ _logger . LogDebug ( "removing {persistedGrantKey} persisted grant from database" , key ) ;
77+
5978 await FakeBookingSystem . Database . RemoveGrant ( key ) ;
6079 }
6180
6281 public async Task StoreAsync ( PersistedGrant grant )
6382 {
64- await FakeBookingSystem . Database . AddGrant ( grant . Key , grant . Type , grant . SubjectId , grant . SessionId , grant . ClientId , grant . CreationTime , grant . Expiration , grant . Data ) ;
83+ if ( await FakeBookingSystem . Database . AddGrant ( grant . Key , grant . Type , grant . SubjectId , grant . SessionId , grant . ClientId , grant . CreationTime , grant . ConsumedTime , grant . Expiration , grant . Data ) )
84+ {
85+ _logger . LogDebug ( "{persistedGrantKey} not found in database, and so was inserted" , grant . Key ) ;
86+ }
87+ else
88+ {
89+ _logger . LogDebug ( "{persistedGrantKey} found in database, and updated" , grant . Key ) ;
90+ }
6591 }
6692 }
6793}
0 commit comments