From b0712418a31f4dab5c115a0f4e21f39ca29e476d Mon Sep 17 00:00:00 2001 From: Austin Kabiru Date: Fri, 30 Nov 2018 12:33:13 +0300 Subject: [PATCH] feat(auth): Allow Basic auth to be enabled --- .../lib/generators/rswag/ui/install/templates/rswag-ui.rb | 4 ++++ rswag-ui/lib/rswag/ui/configuration.rb | 8 ++++++++ rswag-ui/lib/rswag/ui/engine.rb | 7 +++++++ 3 files changed, 19 insertions(+) diff --git a/rswag-ui/lib/generators/rswag/ui/install/templates/rswag-ui.rb b/rswag-ui/lib/generators/rswag/ui/install/templates/rswag-ui.rb index 084a512..b39e2f9 100644 --- a/rswag-ui/lib/generators/rswag/ui/install/templates/rswag-ui.rb +++ b/rswag-ui/lib/generators/rswag/ui/install/templates/rswag-ui.rb @@ -7,4 +7,8 @@ Rswag::Ui.configure do |c| # then the list below should correspond to the relative paths for those endpoints c.swagger_endpoint '/api-docs/v1/swagger.json', 'API V1 Docs' + + # Add Basic Auth in case your API is private + # c.basic_auth_enabled = true + # c.basic_auth_credentials 'username', 'password' end diff --git a/rswag-ui/lib/rswag/ui/configuration.rb b/rswag-ui/lib/rswag/ui/configuration.rb index 5f33c2c..ae06434 100644 --- a/rswag-ui/lib/rswag/ui/configuration.rb +++ b/rswag-ui/lib/rswag/ui/configuration.rb @@ -4,6 +4,7 @@ module Rswag module Ui class Configuration attr_reader :template_locations + attr_accessor :basic_auth_enabled attr_accessor :config_object attr_accessor :oauth_config_object attr_reader :assets_root @@ -20,6 +21,7 @@ module Rswag @assets_root = File.expand_path('../../../../node_modules/swagger-ui-dist', __FILE__) @config_object = {} @oauth_config_object = {} + @basic_auth_enabled = false end def swagger_endpoint(url, name) @@ -27,9 +29,15 @@ module Rswag @config_object[:urls] << { url: url, name: name } end + def basic_auth_credentials(username, password) + @config_object[:basic_auth] = { username: username, password: password } + end + + # rubocop:disable Naming/AccessorMethodName def get_binding binding end + # rubocop:enable Naming/AccessorMethodName end end end diff --git a/rswag-ui/lib/rswag/ui/engine.rb b/rswag-ui/lib/rswag/ui/engine.rb index 78ee075..2e157e3 100644 --- a/rswag-ui/lib/rswag/ui/engine.rb +++ b/rswag-ui/lib/rswag/ui/engine.rb @@ -7,6 +7,13 @@ module Rswag initializer 'rswag-ui.initialize' do |app| middleware.use Rswag::Ui::Middleware, Rswag::Ui.config + + if Rswag::Ui.config.basic_auth_enabled + c = Rswag::Ui.config + app.middleware.use ::Rack::Auth::Basic do |username, password| + c.config_object[:basic_auth].values == [username, password] + end + end end rake_tasks do