13
13
14
14
import { UserManager , UserManagerSettings } from 'oidc-client-ts' ;
15
15
import * as API from '../api.js' ;
16
+ import { fillSearchFilterEdit } from '../things/searchFilter' ;
17
+ import { ThingsSearchGlobalVars } from '../things/thingsSearch' ;
16
18
import * as Utils from '../utils.js' ;
17
19
import { showError , showInfoToast } from '../utils.js' ;
18
20
import authorizationHTML from './authorization.html' ;
@@ -169,8 +171,6 @@ function isSsoCallbackRequest(urlSearchParams?: URLSearchParams): boolean {
169
171
170
172
async function handleSingleSignOnCallback ( urlSearchParams : URLSearchParams ) {
171
173
let environment = Environments . current ( ) ;
172
- let sameProviderForMainAndDevops =
173
- environment . authSettings ?. main ?. oidc . provider == environment . authSettings ?. devops ?. oidc . provider ;
174
174
const oidcProviderId = urlSearchParams . get ( URL_OIDC_PROVIDER ) || environment . authSettings ?. main ?. oidc . provider ;
175
175
let oidcProvider : OidcProviderConfiguration = environment . authSettings . oidc . providers [ oidcProviderId ] ;
176
176
const settings : UserManagerSettings = oidcProvider ;
@@ -188,7 +188,7 @@ async function handleSingleSignOnCallback(urlSearchParams: URLSearchParams) {
188
188
environment . authSettings . devops . method = AuthMethod . oidc
189
189
environment . authSettings . devops . oidc . bearerToken = user [ oidcProvider . extractBearerTokenFrom ]
190
190
}
191
- window . history . replaceState ( null , null , `${ settings . redirect_uri } ?${ user . url_state } ` )
191
+ window . history . replaceState ( null , null , `${ settings . redirect_uri } ?${ atob ( user . url_state ) } ` )
192
192
await Environments . environmentsJsonChanged ( false )
193
193
}
194
194
} catch ( e ) {
@@ -235,7 +235,7 @@ async function performSingleSignOn(forMainAuth: boolean): Promise<boolean> {
235
235
mainAuth : forMainAuth || sameProviderForMainAndDevops ,
236
236
devopsAuth : ! forMainAuth || sameProviderForMainAndDevops
237
237
} ) ,
238
- url_state : urlSearchParams . toString ( )
238
+ url_state : btoa ( urlSearchParams . toString ( ) ) // base64 encode to also support e.g. "&"
239
239
} ) ;
240
240
} catch ( e ) {
241
241
showError ( e )
@@ -260,7 +260,7 @@ async function performSingleSignOut(oidc: OidcAuthSettings) {
260
260
postLogoutRedirectUri = settings . post_logout_redirect_uri ;
261
261
} else {
262
262
// otherwise, build it dynamically, injecting the current urlSearchParams as query:
263
- `${ settings . redirect_uri } ?${ urlSearchParams . toString ( ) } `
263
+ postLogoutRedirectUri = `${ settings . redirect_uri } ?${ urlSearchParams . toString ( ) } `
264
264
}
265
265
await userManager . signoutRedirect ( {
266
266
post_logout_redirect_uri : postLogoutRedirectUri
@@ -334,16 +334,22 @@ export async function onEnvironmentChanged(initialPageLoad: boolean) {
334
334
environment . authSettings ?. main ?. oidc ?. autoSso === true
335
335
) {
336
336
await performSingleSignOn ( true ) ;
337
- await Environments . environmentsJsonChanged ( false ) ;
337
+ Environments . saveEnvironmentsToLocalStorage ( ) ;
338
338
} else if ( initialPageLoad &&
339
339
environment . authSettings ?. devops ?. method === AuthMethod . oidc &&
340
340
environment . authSettings ?. devops ?. oidc ?. autoSso === true
341
341
) {
342
342
await performSingleSignOn ( false ) ;
343
- await Environments . environmentsJsonChanged ( false ) ;
343
+ Environments . saveEnvironmentsToLocalStorage ( ) ;
344
344
} else if ( isSsoCallbackRequest ( urlSearchParams ) ) {
345
345
await handleSingleSignOnCallback ( urlSearchParams ) ;
346
346
}
347
347
348
348
API . setAuthHeader ( _forDevops ) ;
349
+
350
+ let filter = urlSearchParams . get ( 'filter' ) ;
351
+ if ( filter ) {
352
+ ThingsSearchGlobalVars . lastSearch = filter ;
353
+ fillSearchFilterEdit ( filter ) ;
354
+ }
349
355
}
0 commit comments