@@ -36,6 +36,7 @@ export class Authorization {
3636 public readonly products : ko . Observable < Product [ ] > ;
3737 public readonly selectedSubscriptionKey : ko . Observable < string > ;
3838 public readonly collapsedAuth : ko . Observable < boolean > ;
39+ private deleteAuthorizationHeader : boolean = false ;
3940
4041 constructor (
4142 private readonly sessionManager : SessionManager ,
@@ -137,15 +138,22 @@ export class Authorization {
137138 }
138139
139140 private setAuthorizationHeader ( accessToken : string ) : void {
140- this . removeAuthorizationHeader ( ) ;
141+ const authorizationHeader = this . getAuthorizationHeader ( ) ;
141142
143+ if ( authorizationHeader ) {
144+ authorizationHeader . value ( accessToken ) ;
145+ this . deleteAuthorizationHeader = false ;
146+ return ;
147+ }
148+
149+ this . deleteAuthorizationHeader = true ;
142150 const keyHeader = new ConsoleHeader ( ) ;
143151 keyHeader . name ( KnownHttpHeaders . Authorization ) ;
144152 keyHeader . description = "Subscription key." ;
145- keyHeader . secret = true ;
153+ keyHeader . secret ( true ) ;
146154 keyHeader . inputTypeValue ( "password" ) ;
147155 keyHeader . type = "string" ;
148- keyHeader . required = true ;
156+ keyHeader . required = false ;
149157 keyHeader . value ( accessToken ) ;
150158
151159 if ( ! this . isGraphQL ( ) ) {
@@ -174,6 +182,10 @@ export class Authorization {
174182 return this . findHeader ( subscriptionKeyHeaderName ) ;
175183 }
176184
185+ private getAuthorizationHeader ( ) : ConsoleHeader {
186+ return this . findHeader ( KnownHttpHeaders . Authorization ) ;
187+ }
188+
177189 private setSubscriptionKeyHeader ( subscriptionKey : string ) : void {
178190 this . removeSubscriptionKeyHeader ( ) ;
179191
@@ -186,7 +198,7 @@ export class Authorization {
186198 const keyHeader = new ConsoleHeader ( ) ;
187199 keyHeader . name ( subscriptionKeyHeaderName ) ;
188200 keyHeader . description = "Subscription key." ;
189- keyHeader . secret = true ;
201+ keyHeader . secret ( true ) ;
190202 keyHeader . inputTypeValue ( "password" ) ;
191203 keyHeader . type = "string" ;
192204 keyHeader . required = true ;
@@ -201,29 +213,29 @@ export class Authorization {
201213 }
202214 }
203215
204- private async clearStoredCredentials ( grantTypeChanged ?: boolean ) : Promise < void > {
216+ private async clearStoredCredentials ( ) : Promise < void > {
205217 await this . sessionManager . removeItem ( oauthSessionKey ) ;
206-
207- if ( grantTypeChanged ) {
208- this . removeAuthorizationHeader ( true ) ;
209- }
210218 }
211219
212- private removeAuthorizationHeader ( clearValue : boolean = false ) : void {
213- const authorizationHeader = this . findHeader ( KnownHttpHeaders . Authorization ) ;
220+ private removeAuthorizationHeader ( ) : void {
221+ const authorizationHeader = this . getAuthorizationHeader ( ) ;
214222
215- if ( clearValue && authorizationHeader && authorizationHeader . required ) {
216- authorizationHeader . value ( null ) ;
217- } else {
218- this . removeHeader ( authorizationHeader ) ;
223+ if ( authorizationHeader ) {
224+ if ( ! this . deleteAuthorizationHeader ) {
225+ authorizationHeader . value ( null ) ;
226+ } else {
227+ this . removeHeader ( authorizationHeader ) ;
228+ }
219229 }
230+
220231 this . authenticated ( false ) ;
221232 }
222233
223234 private async onGrantTypeChange ( grantType : string ) : Promise < void > {
224- await this . clearStoredCredentials ( true ) ;
235+ await this . clearStoredCredentials ( ) ;
225236
226237 if ( ! grantType || grantType === GrantTypes . password ) {
238+ this . removeAuthorizationHeader ( ) ;
227239 return ;
228240 }
229241
0 commit comments