@@ -60,11 +60,13 @@ const createRedisClient = (): Redis | null => {
60
60
export class AdapterCacheService extends CacheService {
61
61
private apiService : PreAwardApiService ;
62
62
private formStorage : Redis | any ;
63
+ private logger : any ;
63
64
64
65
constructor ( server : HapiServer ) {
65
66
//@ts -ignore
66
67
super ( server ) ;
67
68
this . apiService = server . services ( [ ] ) . preAwardApiService ;
69
+ this . logger = server . logger ;
68
70
const redisClient = this . getRedisClient ( ) ;
69
71
if ( redisClient ) {
70
72
this . formStorage = redisClient ;
@@ -80,13 +82,13 @@ export class AdapterCacheService extends CacheService {
80
82
}
81
83
82
84
async activateSession ( jwt , request ) : Promise < { redirectPath : string } > {
83
- request . logger . info ( `[ACTIVATE-SESSION] jwt ${ jwt } ` ) ;
85
+ this . logger . info ( `[ACTIVATE-SESSION] jwt ${ jwt } ` ) ;
84
86
const initialisedSession = await this . cache . get ( this . JWTKey ( jwt ) ) ;
85
- request . logger . info ( `[ACTIVATE-SESSION] session details ${ initialisedSession } ` ) ;
87
+ this . logger . info ( `[ACTIVATE-SESSION] session details ${ initialisedSession } ` ) ;
86
88
const { decoded} = Jwt . token . decode ( jwt ) ;
87
89
const { payload} : { payload : DecodedSessionToken } = decoded ;
88
90
const userSessionKey = { segment : partition , id : `${ request . yar . id } :${ payload . group } ` } ;
89
- request . logger . info ( `[ACTIVATE-SESSION] session metadata ${ userSessionKey } ` ) ;
91
+ this . logger . info ( `[ACTIVATE-SESSION] session metadata ${ userSessionKey } ` ) ;
90
92
const { redirectPath} = await super . activateSession ( jwt , request ) ;
91
93
let redirectPathNew = redirectPath
92
94
const form_session_identifier = initialisedSession . metadata ?. form_session_identifier ;
@@ -95,20 +97,20 @@ export class AdapterCacheService extends CacheService {
95
97
redirectPathNew = `${ redirectPathNew } ?form_session_identifier=${ form_session_identifier } ` ;
96
98
}
97
99
if ( config . overwriteInitialisedSession ) {
98
- request . logger . info ( "[ACTIVATE-SESSION] Replacing user session with initialisedSession" ) ;
100
+ this . logger . info ( "[ACTIVATE-SESSION] Replacing user session with initialisedSession" ) ;
99
101
this . cache . set ( userSessionKey , initialisedSession , sessionTimeout ) ;
100
102
} else {
101
103
const currentSession = await this . cache . get ( userSessionKey ) ;
102
104
const mergedSession = {
103
105
...currentSession ,
104
106
...initialisedSession ,
105
107
} ;
106
- request . logger . info ( "[ACTIVATE-SESSION] Merging user session with initialisedSession" ) ;
108
+ this . logger . info ( "[ACTIVATE-SESSION] Merging user session with initialisedSession" ) ;
107
109
this . cache . set ( userSessionKey , mergedSession , sessionTimeout ) ;
108
110
}
109
- request . logger . info ( `[ACTIVATE-SESSION] redirect ${ redirectPathNew } ` ) ;
111
+ this . logger . info ( `[ACTIVATE-SESSION] redirect ${ redirectPathNew } ` ) ;
110
112
const key = this . JWTKey ( jwt ) ;
111
- request . logger . info ( `[ACTIVATE-SESSION] drop key ${ JSON . stringify ( key ) } ` ) ;
113
+ this . logger . info ( `[ACTIVATE-SESSION] drop key ${ JSON . stringify ( key ) } ` ) ;
112
114
await this . cache . drop ( key ) ;
113
115
return {
114
116
redirectPath : redirectPathNew ,
@@ -129,7 +131,7 @@ export class AdapterCacheService extends CacheService {
129
131
if ( request . query . form_session_identifier ) {
130
132
id = `${ id } :${ request . query . form_session_identifier } ` ;
131
133
}
132
- request . logger . info ( `[ACTIVATE-SESSION] session key ${ id } and segment is ${ partition } ` ) ;
134
+ this . logger . info ( `[ACTIVATE-SESSION] session key ${ id } and segment is ${ partition } ` ) ;
133
135
return {
134
136
segment : partition ,
135
137
id : `${ id } ${ additionalIdentifier ?? "" } ` ,
@@ -139,13 +141,13 @@ export class AdapterCacheService extends CacheService {
139
141
/**
140
142
* Validates cached form against Pre-Award API.
141
143
*/
142
- private async validateCachedForm ( formId : string , cachedHash : string , request : HapiRequest ) : Promise < boolean > {
144
+ private async validateCachedForm ( formId : string , cachedHash : string ) : Promise < boolean > {
143
145
try {
144
146
const currentHash = await this . apiService . getFormHash ( formId ) ;
145
147
return currentHash === cachedHash ;
146
148
} catch ( error ) {
147
149
// If we can't validate, assume cache is valid
148
- request . logger . warn ( {
150
+ this . logger . warn ( {
149
151
...LOGGER_DATA ,
150
152
message : `Could not validate cache for form ${ formId } , using cached version`
151
153
} ) ;
@@ -156,19 +158,19 @@ export class AdapterCacheService extends CacheService {
156
158
/**
157
159
* Fetches form from Pre-Award API and caches it.
158
160
*/
159
- private async fetchAndCacheForm ( formId : string , request : HapiRequest ) : Promise < PublishedFormResponse | null > {
161
+ private async fetchAndCacheForm ( formId : string ) : Promise < PublishedFormResponse | null > {
160
162
try {
161
163
const apiResponse = await this . apiService . getPublishedForm ( formId ) ;
162
164
if ( ! apiResponse ) return null ;
163
165
const formsCacheKey = `${ FORMS_KEY_PREFIX } :${ formId } ` ;
164
166
await this . formStorage . set ( formsCacheKey , JSON . stringify ( apiResponse ) ) ;
165
- request . logger . info ( {
167
+ this . logger . info ( {
166
168
...LOGGER_DATA ,
167
169
message : `Cached form ${ formId } from Pre-Award API`
168
170
} ) ;
169
171
return apiResponse as PublishedFormResponse ;
170
172
} catch ( error ) {
171
- request . logger . error ( {
173
+ this . logger . error ( {
172
174
...LOGGER_DATA ,
173
175
message : `Failed to fetch form ${ formId } ` ,
174
176
error : error
@@ -229,53 +231,53 @@ export class AdapterCacheService extends CacheService {
229
231
let configObj = null ;
230
232
if ( jsonDataString !== null ) {
231
233
// Cache hit
232
- request . logger . debug ( {
234
+ this . logger . debug ( {
233
235
...LOGGER_DATA ,
234
236
message : `Cache hit for form ${ formId } `
235
237
} ) ;
236
238
configObj = JSON . parse ( jsonDataString ) ;
237
239
if ( ! sessionValidated ) {
238
240
// Validate cached form once per session
239
- request . logger . debug ( {
241
+ this . logger . debug ( {
240
242
...LOGGER_DATA ,
241
243
message : `First access of form ${ formId } in yar session ${ request . yar . id } , validating cache`
242
244
} ) ;
243
- const isValid = await this . validateCachedForm ( formId , configObj . hash , request ) ;
245
+ const isValid = await this . validateCachedForm ( formId , configObj . hash ) ;
244
246
if ( ! isValid ) {
245
- request . logger . info ( {
247
+ this . logger . info ( {
246
248
...LOGGER_DATA ,
247
249
message : `Cache stale for form ${ formId } , fetching fresh version`
248
250
} ) ;
249
- const freshConfig = await this . fetchAndCacheForm ( formId , request ) ;
251
+ const freshConfig = await this . fetchAndCacheForm ( formId ) ;
250
252
if ( freshConfig ) {
251
253
configObj = freshConfig ;
252
254
}
253
255
} else {
254
- request . logger . debug ( {
256
+ this . logger . debug ( {
255
257
...LOGGER_DATA ,
256
258
message : `Cache valid for form ${ formId } `
257
259
} ) ;
258
260
}
259
261
} else {
260
- request . logger . debug ( {
262
+ this . logger . debug ( {
261
263
...LOGGER_DATA ,
262
264
message : `Form ${ formId } already validated in yar session ${ request . yar . id } `
263
265
} ) ;
264
266
}
265
267
} else {
266
268
// Cache miss - fetch from Pre-Award API
267
- request . logger . info ( {
269
+ this . logger . info ( {
268
270
...LOGGER_DATA ,
269
271
message : `Cache miss for form ${ formId } , fetching from Pre-Award API`
270
272
} ) ;
271
- configObj = await this . fetchAndCacheForm ( formId , request ) ;
273
+ configObj = await this . fetchAndCacheForm ( formId ) ;
272
274
if ( ! configObj ) {
273
275
throw Boom . notFound ( `Form '${ formId } ' not found` ) ;
274
276
}
275
277
}
276
278
if ( ! sessionValidated ) {
277
279
// Mark form as validated in this session
278
- request . logger . debug ( {
280
+ this . logger . debug ( {
279
281
...LOGGER_DATA ,
280
282
message : `Marking form ${ formId } as validated in yar session ${ request . yar . id } `
281
283
} ) ;
0 commit comments