Parse defined security requirements correctly

This commit is contained in:
richie
2016-10-14 17:44:27 -07:00
parent 312f68ae72
commit 23f4120fe3
5 changed files with 21 additions and 15 deletions

View File

@@ -65,9 +65,13 @@ module Rswag
def resolve_api_key_parameters
@api_key_params ||= begin
global_requirements = (@global_metadata[:security] || {})
requirements = global_requirements.merge(@api_metadata[:operation][:security] || {})
definitions = (@global_metadata[:securityDefinitions] || {}).slice(*requirements.keys)
# First figure out the security requirement applicable to the operation
global_requirements = (@global_metadata[:security] || [] ).map { |r| r.keys.first }
operation_requirements = (@api_metadata[:operation][:security] || [] ).map { |r| r.keys.first }
requirements = global_requirements | operation_requirements
# Then obtain the scheme definitions for those requirements
definitions = (@global_metadata[:securityDefinitions] || {}).slice(*requirements)
definitions.values.select { |d| d[:type] == :apiKey }
end
end