http://git-wip-us.apache.org/repos/asf/isis/blob/4e81bd87/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/swagger-ui/lib/swagger-oauth.js
----------------------------------------------------------------------
diff --git 
a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/swagger-ui/lib/swagger-oauth.js
 
b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/swagger-ui/lib/swagger-oauth.js
new file mode 100644
index 0000000..7160291
--- /dev/null
+++ 
b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/swagger-ui/lib/swagger-oauth.js
@@ -0,0 +1 @@
+function handleLogin(){var 
e=[],o=window.swaggerUiAuth.authSchemes||window.swaggerUiAuth.securityDefinitions;if(o){var
 i,n=o;for(i in n){var a=n[i];if("oauth2"===a.type&&a.scopes){var 
t;if(Array.isArray(a.scopes)){var 
p;for(p=0;p<a.scopes.length;p++)e.push(a.scopes[p])}else for(t in 
a.scopes)e.push({scope:t,description:a.scopes[t],OAuthSchemeKey:i})}}}for(window.swaggerUi.api&&window.swaggerUi.api.info&&(appName=window.swaggerUi.api.info.title),$(".api-popup-dialog").remove(),popupDialog=$(['<div
 class="api-popup-dialog">','<div class="api-popup-title">Select OAuth2.0 
Scopes</div>','<div class="api-popup-content">',"<p>Scopes are used to grant an 
application different levels of access to data on behalf of the end user. Each 
API may declare one or more scopes.",'<a href="#">Learn how to 
use</a>',"</p>","<p><strong>"+appName+"</strong> API requires the following 
scopes. Select which ones you want to grant to Swagger UI.</p>",'<ul 
class="api-popup-scopes">',"</ul>",'<p class="error-msg
 "></p>','<div class="api-popup-actions"><button class="api-popup-authbtn 
api-button green" type="button">Authorize</button><button 
class="api-popup-cancel api-button gray" 
type="button">Cancel</button></div>',"</div>","</div>"].join("")),$(document.body).append(popupDialog),popup=popupDialog.find("ul.api-popup-scopes").empty(),p=0;p<e.length;p++)t=e[p],str='<li><input
 type="checkbox" id="scope_'+p+'" scope="'+t.scope+'"" 
oauthtype="'+t.OAuthSchemeKey+'"/><label 
for="scope_'+p+'">'+t.scope,t.description&&($.map(o,function(e,o){return 
o}).length>1?str+='<br/><span class="api-scope-desc">'+t.description+" 
("+t.OAuthSchemeKey+")</span>":str+='<br/><span 
class="api-scope-desc">'+t.description+"</span>"),str+="</label></li>",popup.append(str);var
 
r=$(window),s=r.width(),c=r.height(),l=r.scrollTop(),d=popupDialog.outerWidth(),u=popupDialog.outerHeight(),h=(c-u)/2+l,g=(s-d)/2;popupDialog.css({top:(h<0?0:h)+"px",left:(g<0?0:g)+"px"}),popupDialog.find("button.api-popup-cancel").click(function
 
(){popupMask.hide(),popupDialog.hide(),popupDialog.empty(),popupDialog=[]}),$("button.api-popup-authbtn").unbind(),popupDialog.find("button.api-popup-authbtn").click(function(){function
 e(e){return 
e.vendorExtensions["x-tokenName"]||e.tokenName}popupMask.hide(),popupDialog.hide();var
 
o,i=window.swaggerUi.api.authSchemes,n=window.location,a=location.pathname.substring(0,location.pathname.lastIndexOf("/")),t=n.protocol+"//"+n.host+a+"/o2c.html",p=window.oAuthRedirectUrl||t,r=null,s=[],c=popup.find("input:checked"),l=[];for(k=0;k<c.length;k++){var
 d=$(c[k]).attr("scope");s.indexOf(d)===-1&&s.push(d);var 
u=$(c[k]).attr("oauthtype");l.indexOf(u)===-1&&l.push(u)}window.enabledScopes=s;for(var
 h in i)if(i.hasOwnProperty(h)&&l.indexOf(h)!=-1){var 
g=i[h].flow;if("oauth2"!==i[h].type||!g||"implicit"!==g&&"accessCode"!==g){if("oauth2"===i[h].type&&g&&"application"===g){var
 w=i[h];return window.swaggerUi.tokenName=e(w)||"access_token",void 
clientCredentialsFlow(s,w.tokenUrl,h)}if(i[h].grantType
 s){var c=i[h].grantTypes;for(var f in 
c)if(c.hasOwnProperty(f)&&"implicit"===f){var 
w=c[f];w.loginEndpoint.url;r=w.loginEndpoint.url+"?response_type=token",window.swaggerUi.tokenName=e(w)}else
 if(c.hasOwnProperty(f)&&"accessCode"===f){var 
w=c[f];w.tokenRequestEndpoint.url;r=w.tokenRequestEndpoint.url+"?response_type=code",window.swaggerUi.tokenName=e(w)}}}else{var
 
w=i[h];r=w.authorizationUrl+"?response_type="+("implicit"===g?"token":"code"),window.swaggerUi.tokenName=e(w)||"access_token",window.swaggerUi.tokenUrl="accessCode"===g?w.tokenUrl:null,o=h}}redirect_uri=p,r+="&redirect_uri="+encodeURIComponent(p),r+="&realm="+encodeURIComponent(realm),r+="&client_id="+encodeURIComponent(clientId),r+="&scope="+encodeURIComponent(s.join(scopeSeparator)),r+="&state="+encodeURIComponent(o);for(var
 h in 
additionalQueryStringParams)r+="&"+h+"="+encodeURIComponent(additionalQueryStringParams[h]);window.open(r)}),popupMask.show(),popupDialog.show()}function
 handleLogout(){for(key in window.swagger
 
Ui.api.clientAuthorizations.authz)window.swaggerUi.api.clientAuthorizations.remove(key);window.enabledScopes=null,$(".api-ic.ic-on").addClass("ic-off"),$(".api-ic.ic-on").removeClass("ic-on"),$(".api-ic.ic-warning").addClass("ic-error"),$(".api-ic.ic-warning").removeClass("ic-warning")}function
 initOAuth(e){var o=e||{},i=[];return appName=o.appName||i.push("missing 
appName"),popupMask=o.popupMask||$("#api-common-mask"),popupDialog=o.popupDialog||$(".api-popup-dialog"),clientId=o.clientId||i.push("missing
 client id"),clientSecret=o.clientSecret||null,realm=o.realm||i.push("missing 
realm"),scopeSeparator=o.scopeSeparator||" 
",additionalQueryStringParams=o.additionalQueryStringParams||{},i.length>0?void 
log("auth unable initialize oauth: "+i):($("pre 
code").each(function(e,o){hljs.highlightBlock(o)}),$(".api-ic").unbind(),void 
$(".api-ic").click(function(e){$(e.target).hasClass("ic-off")?handleLogin():handleLogout()}))}function
 clientCredentialsFlow(e,o,i){var n={client_id:clientId,cli
 ent_secret:clientSecret,scope:e.join(" 
"),grant_type:"client_credentials"};$.ajax({url:o,type:"POST",data:n,success:function(e,o,n){onOAuthComplete(e,i)},error:function(e,o,i){onOAuthComplete("")}})}var
 
appName,popupMask,popupDialog,clientId,realm,redirect_uri,clientSecret,scopeSeparator,additionalQueryStringParams;window.processOAuthCode=function(e){var
 
o=e.state,i=window.location,n=location.pathname.substring(0,location.pathname.lastIndexOf("/")),a=i.protocol+"//"+i.host+n+"/o2c.html",t=window.oAuthRedirectUrl||a,p={client_id:clientId,code:e.code,grant_type:"authorization_code",redirect_uri:t};clientSecret&&(p.client_secret=clientSecret),$.ajax({url:window.swaggerUiAuth.tokenUrl,type:"POST",data:p,success:function(e,i,n){onOAuthComplete(e,o)},error:function(e,o,i){onOAuthComplete("")}})},window.onOAuthComplete=function(e,o){if(e)if(e.error){var
 
i=$("input[type=checkbox],.secured");i.each(function(e){i[e].checked=!1}),alert(e.error)}else{var
 n=e[window.swaggerUiAuth.tokenName];if(o
 ||(o=e.state),n){var a=null;$.each($(".auth .api-ic 
.api_information_panel"),function(e,o){var i=o;if(i&&i.childNodes){var 
n=[];$.each(i.childNodes,function(e,o){var i=o.innerHTML;i&&n.push(i)});for(var 
t=[],p=0;p<n.length;p++){var 
r=n[p];window.enabledScopes&&window.enabledScopes.indexOf(r)==-1&&t.push(r)}t.length>0?(a=o.parentNode.parentNode,$(a.parentNode).find(".api-ic.ic-on").addClass("ic-off"),$(a.parentNode).find(".api-ic.ic-on").removeClass("ic-on"),$(a).find(".api-ic").addClass("ic-warning"),$(a).find(".api-ic").removeClass("ic-error")):(a=o.parentNode.parentNode,$(a.parentNode).find(".api-ic.ic-off").addClass("ic-on"),$(a.parentNode).find(".api-ic.ic-off").removeClass("ic-off"),$(a).find(".api-ic").addClass("ic-info"),$(a).find(".api-ic").removeClass("ic-warning"),$(a).find(".api-ic").removeClass("ic-error"))}}),"undefined"!=typeof
 
window.swaggerUi&&(window.swaggerUi.api.clientAuthorizations.add(window.swaggerUiAuth.OAuthSchemeKey,new
 SwaggerClient.ApiKeyAuthorization("Aut
 horization","Bearer "+n,"header")),window.swaggerUi.load())}}};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/4e81bd87/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/swagger-ui/o2c.html
----------------------------------------------------------------------
diff --git 
a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/swagger-ui/o2c.html
 
b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/swagger-ui/o2c.html
new file mode 100644
index 0000000..0547515
--- /dev/null
+++ 
b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/swagger-ui/o2c.html
@@ -0,0 +1,23 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<script>
+var qp = null;
+if(/code|token|error/.test(window.location.hash)) {
+  qp = location.hash.substring(1);
+}
+else {
+  qp = location.search.substring(1);
+}
+qp = qp ? JSON.parse('{"' + qp.replace(/&/g, '","').replace(/=/g,'":"') + '"}',
+  function(key, value) {
+    return key===""?value:decodeURIComponent(value) }
+  ):{}
+
+if (window.opener.swaggerUiAuth.tokenUrl)
+    window.opener.processOAuthCode(qp);
+else
+    window.opener.onOAuthComplete(qp);
+
+window.close();
+</script>

Reply via email to