diff --git a/src/main/html/css/print.css b/src/main/html/css/print.css index 54d6bb5b..7a8c3264 100644 --- a/src/main/html/css/print.css +++ b/src/main/html/css/print.css @@ -1181,6 +1181,10 @@ .swagger-section .oauth_submit { text-align: center; } +.swagger-section .authorize__btn:hover { + text-decoration: underline; + cursor: pointer; +} .swagger-section .auth_container .basic_auth__title { color: #547f00; font-size: 1.2em; diff --git a/src/main/html/css/screen.css b/src/main/html/css/screen.css index bcdb0c20..5c9d76b1 100644 --- a/src/main/html/css/screen.css +++ b/src/main/html/css/screen.css @@ -1181,6 +1181,10 @@ .swagger-section .oauth_submit { text-align: center; } +.swagger-section .authorize__btn:hover { + text-decoration: underline; + cursor: pointer; +} .swagger-section .auth_container .basic_auth__title { color: #547f00; font-size: 1.2em; diff --git a/src/main/javascript/view/ApiKeyButton.js b/src/main/javascript/view/ApiKeyButton.js index 1820ab6f..7d5cce66 100644 --- a/src/main/javascript/view/ApiKeyButton.js +++ b/src/main/javascript/view/ApiKeyButton.js @@ -14,7 +14,7 @@ SwaggerUi.Views.ApiKeyButton = Backbone.View.extend({ // TODO: append this to gl }, render: function(){ - $(this.el).html(this.template(this.model)); + this.$el.html(this.template(this.model)); return this; }, diff --git a/src/main/javascript/view/MainView.js b/src/main/javascript/view/MainView.js index 9d3c748f..7eb8aae2 100644 --- a/src/main/javascript/view/MainView.js +++ b/src/main/javascript/view/MainView.js @@ -89,18 +89,9 @@ SwaggerUi.Views.MainView = Backbone.View.extend({ $(this.el).html(Handlebars.templates.main(this.model)); this.model.securityDefinitions = this.model.securityDefinitions || {}; - for (name in this.model.securityDefinitions) { - auth = this.model.securityDefinitions[name]; - - if (auth.type === 'apiKey') { - authEl = new SwaggerUi.Views.ApiKeyButton({model: auth, router: this.router}).render().el; - $('.auth_main_container').append(authEl); - } - - if (auth.type === 'basic' && $('.auth_main_container .basic_auth_container').length === 0) { - authEl = new SwaggerUi.Views.BasicAuthButton({model: auth, router: this.router}).render().el; - $('.auth_main_container').append(authEl); - } + if (this.model.securityDefinitions) { + this.authView = new SwaggerUi.Views.AuthView({model: this.model.securityDefinitions}); + this.$('.authorize-wrapper').append(this.authView.render().el); } // Render each resource diff --git a/src/main/javascript/view/OperationView.js b/src/main/javascript/view/OperationView.js index dfc34e66..90125b4e 100644 --- a/src/main/javascript/view/OperationView.js +++ b/src/main/javascript/view/OperationView.js @@ -91,9 +91,54 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({ this.model.isReadOnly = true; } this.model.description = this.model.description || this.model.notes; - - this.handleAuth(); - + this.model.oauth = null; + modelAuths = this.model.authorizations || this.model.security; + if (modelAuths) { + if (Array.isArray(modelAuths)) { + for (l = 0, len = modelAuths.length; l < len; l++) { + auths = modelAuths[l]; + for (key in auths) { + for (a in this.auths) { + auth = this.auths[a]; + if (key === auth.name) { + if (auth.type === 'oauth2') { + this.model.oauth = {}; + this.model.oauth.scopes = []; + ref1 = auth.value.scopes; + for (k in ref1) { + v = ref1[k]; + scopeIndex = auths[key].indexOf(k); + if (scopeIndex >= 0) { + o = { + scope: k, + description: v + }; + this.model.oauth.scopes.push(o); + } + } + } + } + } + } + } + } else { + for (k in modelAuths) { + v = modelAuths[k]; + if (k === 'oauth2') { + if (this.model.oauth === null) { + this.model.oauth = {}; + } + if (this.model.oauth.scopes === void 0) { + this.model.oauth.scopes = []; + } + for (m = 0, len1 = v.length; m < len1; m++) { + o = v[m]; + this.model.oauth.scopes.push(o); + } + } + } + } + } if (typeof this.model.responses !== 'undefined') { this.model.responseMessages = []; ref2 = this.model.responses; @@ -804,95 +849,6 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({ } } return null; - }, - - handleAuth: function () { - var modelAuths, auths, i, l, len, len1, ref1, scopeIndex; - var definitionsMap = {}; - - this.auths = this.auths || []; - - for (l = 0, len = this.auths.length; l < len; l++) { - definitionsMap[this.auths[l].name] = this.auths[l].value; - } - - this.model.oauth = null; - - modelAuths = this.model.authorizations || this.model.security; - - if (!modelAuths) { return null; } - - if (Array.isArray(modelAuths)) { - modelAuths.forEach(function (security) { - for (i in security) { - security[i] = security[i] || {}; - switch (security[i].type) { - case 'apiKey': break; - case 'basic': break; - default: - //handle from definitions - } - } - }); - } - - - if (Array.isArray(modelAuths)) { - for (l = 0, len = modelAuths.length; l < len; l++) { - - //auths - single auth from security - auths = modelAuths[l]; - for (key in auths) { - - //this.auths - auth from definitions - for (a in this.auths) { - //auth - one single auth from definition - auth = this.auths[a]; - - // if security name is in definitions - if (key === auth.name) { - - if (auth.type === 'oauth2') { - this.model.oauth = {}; - this.model.oauth.scopes = []; - ref1 = auth.value.scopes; - for (k in ref1) { - v = ref1[k]; - scopeIndex = auths[key].indexOf(k); - if (scopeIndex >= 0) { - o = { - scope: k, - description: v - }; - this.model.oauth.scopes.push(o); - } - } - } - //if (auth.type === 'apiKey') { - // console.log('apiKey') - //} - } - } - } - } - } else { - for (k in modelAuths) { - v = modelAuths[k]; - if (k === 'oauth2') { - if (this.model.oauth === null) { - this.model.oauth = {}; - } - if (this.model.oauth.scopes === void 0) { - this.model.oauth.scopes = []; - } - for (m = 0, len1 = v.length; m < len1; m++) { - o = v[m]; - this.model.oauth.scopes.push(o); - } - } - } - } - } }); diff --git a/src/main/less/auth.less b/src/main/less/auth.less index cae856e3..54cb8696 100644 --- a/src/main/less/auth.less +++ b/src/main/less/auth.less @@ -19,6 +19,13 @@ .oauth_submit { text-align: center; } + .authorize__btn { + &:hover { + text-decoration: underline; + cursor: pointer; + } + } + .auth_container { .basic_auth__title { diff --git a/src/main/template/main.handlebars b/src/main/template/main.handlebars index fb678d2a..4c5c19f1 100644 --- a/src/main/template/main.handlebars +++ b/src/main/template/main.handlebars @@ -16,6 +16,8 @@