@@ -30,7 +30,16 @@ import { showAmazonQWalkthroughOnce } from '../../amazonq/onboardingPage/walkthr
3030import { setContext } from '../../shared/vscode/setContext'
3131import { openUrl } from '../../shared/utilities/vsCodeUtils'
3232import { telemetry } from '../../shared/telemetry/telemetry'
33- import { AuthStateEvent , cacheChangedEvent , LanguageClientAuth , Login , SsoLogin , IamLogin } from '../../auth/auth2'
33+ import {
34+ AuthStateEvent ,
35+ cacheChangedEvent ,
36+ LanguageClientAuth ,
37+ Login ,
38+ SsoLogin ,
39+ IamLogin ,
40+ AuthState ,
41+ LoginTypes ,
42+ } from '../../auth/auth2'
3443import { builderIdStartUrl , internalStartUrl } from '../../auth/sso/constants'
3544import { VSCODE_EXTENSION_ID } from '../../shared/extensions'
3645import { RegionProfileManager } from '../region/regionProfileManager'
@@ -108,11 +117,11 @@ export class AuthUtil implements IAuthProvider {
108117 }
109118
110119 isSsoSession ( ) : boolean {
111- return this . session instanceof SsoLogin
120+ return this . session ?. loginType === LoginTypes . SSO
112121 }
113122
114123 isIamSession ( ) : boolean {
115- return this . session instanceof IamLogin
124+ return this . session ?. loginType === LoginTypes . IAM
116125 }
117126
118127 /**
@@ -204,36 +213,30 @@ export class AuthUtil implements IAuthProvider {
204213 }
205214
206215 async getToken ( ) {
207- if ( this . session ) {
208- const token = ( await this . session . getCredential ( ) ) . credential
209- if ( typeof token !== 'string' ) {
210- throw new ToolkitError ( 'Cannot get token with IAM session' )
211- }
212- return token
216+ if ( this . isSsoSession ( ) ) {
217+ const response = await this . session ! . getCredential ( )
218+ return response . credential as string
213219 } else {
214- throw new ToolkitError ( 'Cannot get credential without logging in.' )
220+ throw new ToolkitError ( 'Cannot get credential without logging in with SSO .' )
215221 }
216222 }
217223
218224 async getIamCredential ( ) {
219- if ( this . session ) {
220- const credential = ( await this . session . getCredential ( ) ) . credential
221- if ( typeof credential !== 'object' ) {
222- throw new ToolkitError ( 'Cannot get credential with SSO session' )
223- }
224- return credential
225+ if ( this . isIamSession ( ) ) {
226+ const response = await this . session ! . getCredential ( )
227+ return response . credential as IamCredentials
225228 } else {
226- throw new ToolkitError ( 'Cannot get credential without logging in.' )
229+ throw new ToolkitError ( 'Cannot get credential without logging in with IAM .' )
227230 }
228231 }
229232
230233 get connection ( ) {
231234 return this . session ?. data
232235 }
233236
234- getAuthState ( ) {
235- if ( this . session ) {
236- return this . session . getConnectionState ( )
237+ getAuthState ( ) : AuthState {
238+ if ( this . isSsoSession ( ) || this . isIamSession ( ) ) {
239+ return this . session ! . getConnectionState ( )
237240 } else {
238241 return 'notConnected'
239242 }
@@ -255,10 +258,6 @@ export class AuthUtil implements IAuthProvider {
255258 return Boolean ( this . connection ?. startUrl && this . connection ?. startUrl !== builderIdStartUrl )
256259 }
257260
258- isIamConnection ( ) {
259- return Boolean ( this . connection ?. accessKey && this . connection ?. secretKey )
260- }
261-
262261 isInternalAmazonUser ( ) : boolean {
263262 return this . isConnected ( ) && this . connection ?. startUrl === internalStartUrl
264263 }
@@ -360,11 +359,12 @@ export class AuthUtil implements IAuthProvider {
360359
361360 private async stateChangeHandler ( e : AuthStateEvent ) {
362361 if ( e . state === 'refreshed' ) {
363- const params = this . session ? ( await this . session . getCredential ( ) ) . updateCredentialsParams : undefined
364362 if ( this . isSsoSession ( ) ) {
365- await this . lspAuth . updateBearerToken ( params )
363+ const params = await this . session ! . getCredential ( )
364+ await this . lspAuth . updateBearerToken ( params . updateCredentialsParams )
366365 } else if ( this . isIamSession ( ) ) {
367- await this . lspAuth . updateIamCredential ( params )
366+ const params = await this . session ! . getCredential ( )
367+ await this . lspAuth . updateIamCredential ( params . updateCredentialsParams )
368368 }
369369 } else {
370370 this . logger . info ( `codewhisperer: connection changed to ${ e . state } ` )
@@ -387,11 +387,12 @@ export class AuthUtil implements IAuthProvider {
387387 this . session = undefined
388388 }
389389 if ( state === 'connected' ) {
390- const params = this . session ? ( await this . session . getCredential ( ) ) . updateCredentialsParams : undefined
391390 if ( this . isSsoSession ( ) ) {
392- await this . lspAuth . updateBearerToken ( params )
391+ const params = await this . session ! . getCredential ( )
392+ await this . lspAuth . updateBearerToken ( params . updateCredentialsParams )
393393 } else if ( this . isIamSession ( ) ) {
394- await this . lspAuth . updateIamCredential ( params )
394+ const params = await this . session ! . getCredential ( )
395+ await this . lspAuth . updateIamCredential ( params . updateCredentialsParams )
395396 }
396397
397398 if ( this . isIdcConnection ( ) ) {
0 commit comments