@@ -7,6 +7,7 @@ import { getOperationLogger } from '../logging/OperationLogger';
77import { serializePolicyInstantiation } from '../logging/OperationSerializer' ;
88import { TicketingStrategy } from '../ticketing/strategy/TicketingStrategy' ;
99import { Ticket } from '../ticketing/Ticket' ;
10+ import { RefreshTokenIssuer } from '../tokens/RefreshTokenIssuer' ;
1011import { TokenFactory } from '../tokens/TokenFactory' ;
1112import { reType } from '../util/ReType' ;
1213import { DialogInput } from './Input' ;
@@ -27,12 +28,14 @@ export class BaseNegotiator implements Negotiator {
2728 * @param ticketStore - A KeyValueStorage to track Tickets.
2829 * @param ticketingStrategy - The strategy describing the life cycle of a Ticket.
2930 * @param tokenFactory - A factory for minting Access Tokens.
31+ * @param refreshTokenIssuer - An optional issuer for refresh tokens.
3032 */
3133 public constructor (
32- protected verifier : Verifier ,
33- protected ticketStore : KeyValueStorage < string , Ticket > ,
34- protected ticketingStrategy : TicketingStrategy ,
35- protected tokenFactory : TokenFactory ,
34+ protected readonly verifier : Verifier ,
35+ protected readonly ticketStore : KeyValueStorage < string , Ticket > ,
36+ protected readonly ticketingStrategy : TicketingStrategy ,
37+ protected readonly tokenFactory : TokenFactory ,
38+ protected readonly refreshTokenIssuer ?: RefreshTokenIssuer ,
3639 ) { }
3740
3841 /**
@@ -60,6 +63,9 @@ export class BaseNegotiator implements Negotiator {
6063 const { token, tokenType } = await this . tokenFactory . serialize ( { permissions : resolved . value } ) ;
6164 this . logger . debug ( `Minted token ${ JSON . stringify ( token ) } ` ) ;
6265
66+ const refreshToken = this . refreshTokenIssuer ?
67+ await this . refreshTokenIssuer . issue ( { ...updatedTicket . provided } , resolved . value ) : undefined ;
68+
6369 // TODO:: test logging
6470 this . operationLogger . addLogEntry ( serializePolicyInstantiation ( ) )
6571
@@ -68,6 +74,7 @@ export class BaseNegotiator implements Negotiator {
6874 return ( {
6975 access_token : token ,
7076 token_type : tokenType ,
77+ refresh_token : refreshToken ,
7178 } ) ;
7279 }
7380
0 commit comments