From 7855784857fbcd0277c17112b02515b76558f165 Mon Sep 17 00:00:00 2001 From: iliassk Date: Sat, 26 Jan 2019 23:29:25 +0100 Subject: [PATCH] Added support for extraQueryParams in the SignoutRequest --- src/OidcClient.js | 6 ++++-- src/SignoutRequest.js | 6 +++++- test/unit/SignoutRequest.spec.js | 9 +++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/OidcClient.js b/src/OidcClient.js index ed8df8a3..9f6efacd 100644 --- a/src/OidcClient.js +++ b/src/OidcClient.js @@ -123,12 +123,13 @@ export class OidcClient { }); } - createSignoutRequest({id_token_hint, data, state, post_logout_redirect_uri} = {}, + createSignoutRequest({id_token_hint, data, state, post_logout_redirect_uri, extraQueryParams } = {}, stateStore ) { Log.debug("OidcClient.createSignoutRequest"); post_logout_redirect_uri = post_logout_redirect_uri || this._settings.post_logout_redirect_uri; + extraQueryParams = extraQueryParams || this._settings.extraQueryParams; return this._metadataService.getEndSessionEndpoint().then(url => { if (!url) { @@ -142,7 +143,8 @@ export class OidcClient { url, id_token_hint, post_logout_redirect_uri, - data: data || state + data: data || state, + extraQueryParams }); var signoutState = request.state; diff --git a/src/SignoutRequest.js b/src/SignoutRequest.js index 0c429ee8..86f639c4 100644 --- a/src/SignoutRequest.js +++ b/src/SignoutRequest.js @@ -6,7 +6,7 @@ import { UrlUtility } from './UrlUtility'; import { State } from './State'; export class SignoutRequest { - constructor({url, id_token_hint, post_logout_redirect_uri, data}) { + constructor({url, id_token_hint, post_logout_redirect_uri, data, extraQueryParams}) { if (!url) { Log.error("SignoutRequest.ctor: No url passed"); throw new Error("url"); @@ -26,6 +26,10 @@ export class SignoutRequest { } } + for(let key in extraQueryParams){ + url = UrlUtility.addQueryParam(url, key, extraQueryParams[key]) + } + this.url = url; } } diff --git a/test/unit/SignoutRequest.spec.js b/test/unit/SignoutRequest.spec.js index f4cf85bb..bbd5391b 100644 --- a/test/unit/SignoutRequest.spec.js +++ b/test/unit/SignoutRequest.spec.js @@ -80,6 +80,15 @@ describe("SignoutRequest", function() { url.should.contain("state=" + subject.state.id); }); + it("should include extra query params", function() { + settings.extraQueryParams = { + 'TargetResource': 'logouturl.com', + 'InErrorResource': 'errorurl.com' + }; + subject = new SignoutRequest(settings); + subject.url.should.contain('TargetResource=logouturl.com&InErrorResource=errorurl.com'); + }); + }); });