@@ -13,7 +13,7 @@ type _List = {
1313} ;
1414type _Keystone = { lists : Record < string , _List > } ;
1515
16- export class SessionManager {
16+ export class SessionManager < SessionMeta extends Record < string , string > > {
1717 _cookieSecret : SessionOptions [ 'secret' ] ;
1818 _cookie : SessionOptions [ 'cookie' ] ;
1919 _sessionStore : SessionOptions [ 'store' ] ;
@@ -146,12 +146,16 @@ export class SessionManager {
146146 return item ;
147147 }
148148
149- startAuthedSession ( req : Request , { item, list } : { item : _Item ; list : _List } ) {
149+ startAuthedSession (
150+ req : Request ,
151+ { item, list, meta } : { item : _Item ; list : _List ; meta ?: SessionMeta }
152+ ) {
150153 return new Promise ( ( resolve , reject ) =>
151154 req . session . regenerate ( err => {
152155 if ( err ) return reject ( err ) ;
153156 ( req . session as any ) . keystoneListKey = list . key ;
154157 ( req . session as any ) . keystoneItemId = item . id ;
158+ ( req . session as any ) . keystoneSessionMeta = meta ;
155159 resolve ( cookieSignature . sign ( req . session . id , this . _cookieSecret ) ) ;
156160 } )
157161 ) ;
@@ -169,8 +173,15 @@ export class SessionManager {
169173
170174 getContext ( req : Request ) {
171175 return {
172- startAuthedSession : ( { item, list } : { item : _Item ; list : _List } ) =>
173- this . startAuthedSession ( req , { item, list } ) ,
176+ startAuthedSession : ( {
177+ item,
178+ list,
179+ meta,
180+ } : {
181+ item : _Item ;
182+ list : _List ;
183+ meta ?: SessionMeta ;
184+ } ) => this . startAuthedSession ( req , { item, list, meta } ) ,
174185 endAuthedSession : ( ) => this . endAuthedSession ( req ) ,
175186 } ;
176187 }
0 commit comments