From fd3eb4f65a3a3293c7d37b9ec1f54555a3c3285d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moses=20Palm=C3=A9r?= Date: Thu, 29 Dec 2016 08:39:40 +0100 Subject: [PATCH 1/4] Read token name using function --- lib/swagger-oauth.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/lib/swagger-oauth.js b/lib/swagger-oauth.js index 5d8354df..c8725262 100644 --- a/lib/swagger-oauth.js +++ b/lib/swagger-oauth.js @@ -121,7 +121,18 @@ function handleLogin() { //TODO: merge not replace if scheme is different from any existing //(needs to be aware of schemes to do so correctly) window.enabledScopes=scopes; - + + /** + * Returns the name of the access token parameter returned by the server. + * + * @param dets + * The authorisation scheme configuration. + * @return the name of the access token parameter + */ + function getTokenName(dets) { + return dets.tokenName; + } + for (var key in authSchemes) { if (authSchemes.hasOwnProperty(key) && OAuthSchemeKeys.indexOf(key) != -1) { //only look at keys that match this scope. var flow = authSchemes[key].flow; @@ -129,13 +140,13 @@ function handleLogin() { if(authSchemes[key].type === 'oauth2' && flow && (flow === 'implicit' || flow === 'accessCode')) { var dets = authSchemes[key]; url = dets.authorizationUrl + '?response_type=' + (flow === 'implicit' ? 'token' : 'code'); - window.swaggerUi.tokenName = dets.tokenName || 'access_token'; + window.swaggerUi.tokenName = getTokenName(dets) || 'access_token'; window.swaggerUi.tokenUrl = (flow === 'accessCode' ? dets.tokenUrl : null); state = key; } else if(authSchemes[key].type === 'oauth2' && flow && (flow === 'application')) { var dets = authSchemes[key]; - window.swaggerUi.tokenName = dets.tokenName || 'access_token'; + window.swaggerUi.tokenName = getTokenName(dets) || 'access_token'; clientCredentialsFlow(scopes, dets.tokenUrl, key); return; } @@ -147,13 +158,13 @@ function handleLogin() { var dets = o[t]; var ep = dets.loginEndpoint.url; url = dets.loginEndpoint.url + '?response_type=token'; - window.swaggerUi.tokenName = dets.tokenName; + window.swaggerUi.tokenName = getTokenName(dets); } else if (o.hasOwnProperty(t) && t === 'accessCode') { var dets = o[t]; var ep = dets.tokenRequestEndpoint.url; url = dets.tokenRequestEndpoint.url + '?response_type=code'; - window.swaggerUi.tokenName = dets.tokenName; + window.swaggerUi.tokenName = getTokenName(dets); } } } From 7ca8cdeffb608d7d259a0f2d55fe862f4031d610 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moses=20Palm=C3=A9r?= Date: Thu, 29 Dec 2016 09:53:34 +0100 Subject: [PATCH 2/4] Read token name using function in auth view --- lib/swagger-oauth.js | 2 +- src/main/javascript/view/AuthView.js | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/swagger-oauth.js b/lib/swagger-oauth.js index c8725262..85459c5b 100644 --- a/lib/swagger-oauth.js +++ b/lib/swagger-oauth.js @@ -130,7 +130,7 @@ function handleLogin() { * @return the name of the access token parameter */ function getTokenName(dets) { - return dets.tokenName; + return dets['x-tokenName'] || dets.tokenName; } for (var key in authSchemes) { diff --git a/src/main/javascript/view/AuthView.js b/src/main/javascript/view/AuthView.js index 8511a994..f3d1fa40 100644 --- a/src/main/javascript/view/AuthView.js +++ b/src/main/javascript/view/AuthView.js @@ -109,22 +109,33 @@ SwaggerUi.Views.AuthView = Backbone.View.extend({ window.enabledScopes = scopes; var flow = auth.get('flow'); + /** + * Returns the name of the access token parameter returned by the server. + * + * @param dets + * The authorisation scheme configuration. + * @return the name of the access token parameter + */ + function getTokenName(dets) { + return dets.tokenName; + } + if(auth.get('type') === 'oauth2' && flow && (flow === 'implicit' || flow === 'accessCode')) { dets = auth.attributes; url = dets.authorizationUrl + '?response_type=' + (flow === 'implicit' ? 'token' : 'code'); - container.tokenName = dets.tokenName || 'access_token'; + container.tokenName = getTokenName(dets) || 'access_token'; container.tokenUrl = (flow === 'accessCode' ? dets.tokenUrl : null); state = container.OAuthSchemeKey; } else if(auth.get('type') === 'oauth2' && flow && (flow === 'application')) { dets = auth.attributes; - container.tokenName = dets.tokenName || 'access_token'; + container.tokenName = getTokenName(dets) || 'access_token'; this.clientCredentialsFlow(scopes, dets, container.OAuthSchemeKey); return; } else if(auth.get('type') === 'oauth2' && flow && (flow === 'password')) { dets = auth.attributes; - container.tokenName = dets.tokenName || 'access_token'; + container.tokenName = getTokenName(dets) || 'access_token'; this.passwordFlow(scopes, dets, container.OAuthSchemeKey); return; } @@ -136,13 +147,13 @@ SwaggerUi.Views.AuthView = Backbone.View.extend({ dets = o[t]; ep = dets.loginEndpoint.url; url = dets.loginEndpoint.url + '?response_type=token'; - container.tokenName = dets.tokenName; + container.tokenName = getTokenName(dets); } else if (o.hasOwnProperty(t) && t === 'accessCode') { dets = o[t]; ep = dets.tokenRequestEndpoint.url; url = dets.tokenRequestEndpoint.url + '?response_type=code'; - container.tokenName = dets.tokenName; + container.tokenName = getTokenName(dets); } } } From 43760ec29f5a1b91123674f022ec27f030acc3f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moses=20Palm=C3=A9r?= Date: Thu, 29 Dec 2016 09:54:45 +0100 Subject: [PATCH 3/4] Prefer tokenName as vendor extension --- lib/swagger-oauth.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/swagger-oauth.js b/lib/swagger-oauth.js index 85459c5b..c2fb9b96 100644 --- a/lib/swagger-oauth.js +++ b/lib/swagger-oauth.js @@ -130,7 +130,7 @@ function handleLogin() { * @return the name of the access token parameter */ function getTokenName(dets) { - return dets['x-tokenName'] || dets.tokenName; + return dets.vendorExtensions['x-tokenName'] || dets.tokenName; } for (var key in authSchemes) { From 4f467b407304d80876d168d7f16af0d63f54c51f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moses=20Palm=C3=A9r?= Date: Thu, 29 Dec 2016 09:57:30 +0100 Subject: [PATCH 4/4] Prefer tokenName as vendor extension in auth view --- src/main/javascript/view/AuthView.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/javascript/view/AuthView.js b/src/main/javascript/view/AuthView.js index f3d1fa40..ad024ef3 100644 --- a/src/main/javascript/view/AuthView.js +++ b/src/main/javascript/view/AuthView.js @@ -117,7 +117,7 @@ SwaggerUi.Views.AuthView = Backbone.View.extend({ * @return the name of the access token parameter */ function getTokenName(dets) { - return dets.tokenName; + return dets.vendorExtensions['x-tokenName'] || dets.tokenName; } if(auth.get('type') === 'oauth2' && flow && (flow === 'implicit' || flow === 'accessCode')) {