@@ -8,6 +8,7 @@ import { getOperationLogger } from '../logging/OperationLogger';
88import { serializePolicyInstantiation } from '../logging/OperationSerializer' ;
99import { TicketingStrategy } from '../ticketing/strategy/TicketingStrategy' ;
1010import { Ticket } from '../ticketing/Ticket' ;
11+ import { RefreshTokenIssuer } from '../tokens/RefreshTokenIssuer' ;
1112import { TokenFactory } from '../tokens/TokenFactory' ;
1213import { reType } from '../util/ReType' ;
1314import { Permission } from '../views/Permission' ;
@@ -29,12 +30,14 @@ export class BaseNegotiator implements Negotiator {
2930 * @param ticketStore - A KeyValueStorage to track Tickets.
3031 * @param ticketingStrategy - The strategy describing the life cycle of a Ticket.
3132 * @param tokenFactory - A factory for minting Access Tokens.
33+ * @param refreshTokenIssuer - An optional issuer for refresh tokens.
3234 */
3335 public constructor (
34- protected verifier : Verifier ,
35- protected ticketStore : KeyValueStorage < string , Ticket > ,
36- protected ticketingStrategy : TicketingStrategy ,
37- protected tokenFactory : TokenFactory ,
36+ protected readonly verifier : Verifier ,
37+ protected readonly ticketStore : KeyValueStorage < string , Ticket > ,
38+ protected readonly ticketingStrategy : TicketingStrategy ,
39+ protected readonly tokenFactory : TokenFactory ,
40+ protected readonly refreshTokenIssuer ?: RefreshTokenIssuer ,
3841 ) { }
3942
4043 /**
@@ -67,6 +70,9 @@ export class BaseNegotiator implements Negotiator {
6770 } ) ;
6871 this . logger . debug ( `Minted token ${ JSON . stringify ( token ) } ` ) ;
6972
73+ const refreshToken = this . refreshTokenIssuer ?
74+ await this . refreshTokenIssuer . issue ( { ...updatedTicket . provided } , resolved . value ) : undefined ;
75+
7076 // TODO:: test logging
7177 this . operationLogger . addLogEntry ( serializePolicyInstantiation ( ) )
7278
@@ -75,6 +81,7 @@ export class BaseNegotiator implements Negotiator {
7581 return ( {
7682 access_token : token ,
7783 token_type : tokenType ,
84+ refresh_token : refreshToken ,
7885 ...( partial ? { partial : true } : { } ) ,
7986 } ) ;
8087 }
0 commit comments