[auth] parsing authentications from definitions

This commit is contained in:
Anna Bodnia
2016-03-07 20:15:08 +02:00
parent 23332b1310
commit d2b94d5a01
5 changed files with 76 additions and 6 deletions

View File

@@ -249,6 +249,7 @@ window.SwaggerUi = Backbone.Router.extend({
window.SwaggerUi.Views = {};
window.SwaggerUi.partials = {};
window.SwaggerUi.utils = {};
// don't break backward compatibility with previous versions and warn users to upgrade their code
(function(){

View File

@@ -0,0 +1,35 @@
'use strict';
window.SwaggerUi.utils = {
parseSecurityDefinitions: function (security) {
var auths = window.swaggerUi.api.authSchemes || window.swaggerUi.api.securityDefinitions;
var result = [];
if (!Array.isArray(security)) { return null; }
security.forEach(function (item) {
var singleSecurity = {};
for (var key in item) {
if (Array.isArray(item[key])) {
if (!auths[key]) { continue; }
auths[key] = auths[key] || {};
singleSecurity[key] = auths[key];
if (auths[key].type === 'oauth2') {
for (var i in singleSecurity[key].scopes) {
if (item[key].indexOf(i) < 0) {
delete singleSecurity[key].scopes[i];
}
}
}
} else {
singleSecurity[key] = item[key];
}
}
result.push(singleSecurity);
});
return result;
}
};

View File

@@ -258,8 +258,7 @@ SwaggerUi.Views.OperationView = Backbone.View.extend({
}
if (Array.isArray(this.model.security)) {
//Todo add parsing security from definitions
var authsModel = { auths: this.model.security };
var authsModel = { auths: SwaggerUi.utils.parseSecurityDefinitions(this.model.security) };
authsModel.isLogout = !_.isEmpty(window.swaggerUi.api.clientAuthorizations.authz);
this.authView = new SwaggerUi.Views.AuthButtonView({model: authsModel, router: this.router});