@@ -38,7 +38,10 @@ class TokenRequest extends BaseRequest {
3838 . then ( request . authenticateClient )
3939 . then ( request . verifyAuthorizationCode )
4040 . then ( request . grant )
41- . catch ( err => request . error ( err ) )
41+ . catch ( err => {
42+ console . error ( err )
43+ request . error ( err )
44+ } )
4245 }
4346
4447 /**
@@ -497,8 +500,38 @@ class TokenRequest extends BaseRequest {
497500 * @returns {Promise<Object> } Resolves to response object
498501 */
499502 refreshTokenGrant ( request ) {
500- // TODO: I don't think this.tokenResponse is implemented..
501- return AccessToken . refresh ( request ) . then ( this . tokenResponse )
503+ return Promise . resolve ( { } )
504+ . then ( ( ) => this . verifyRefreshToken ( request ) )
505+ . then ( response => request . includeAccessToken ( response ) )
506+ . then ( response => {
507+ request . res . json ( response )
508+ } )
509+ }
510+
511+ /**
512+ * Verify the refresh token
513+ */
514+ verifyRefreshToken ( request ) {
515+ const { params, provider } = request ;
516+ const refreshToken = params [ 'refresh_token' ]
517+ if ( ! refreshToken || typeof refreshToken !== 'string' ) {
518+ return request . badRequest ( {
519+ error : 'invalid_grant' ,
520+ error_description : 'Invalid refresh token'
521+ } )
522+ }
523+ return provider . backend . get ( 'refresh' , refreshToken ) . then ( ( refreshTokenInfo ) => {
524+ if ( ! refreshTokenInfo ) {
525+ return request . badRequest ( {
526+ error : 'invalid_grant' ,
527+ error_description : 'Refresh token not found'
528+ } )
529+ }
530+ request . subject = {
531+ _id : refreshTokenInfo . payload . sub
532+ }
533+ return { }
534+ } )
502535 }
503536
504537 /**
0 commit comments