richhollis / swagger-docs

Generates swagger-ui json files for Rails APIs with a simple DSL.
MIT License
749 stars 150 forks source link

How Can i User Swagger docs for devise sessions controller #163

Open vishaltps opened 7 years ago

vishaltps commented 7 years ago

I used rails swagger gem for documenting my rails api. it is working fine for all controller . but it is not working for devise::sessionsController.

Here is my code , I added 2 controller as base in my api swagger_docs.rb def self.base_api_controller [ActionController::API,ActionController::Base] end

In sessions_controller.rb

` include Swagger::Docs::Methods swagger_controller :sessions, "Login"

swagger_api :create do summary "Generate Access Token" param :form, 'user[email]', :string, :required, "Email of user" param :form, 'user[password]', :string ,:required, "Password of user" response :unauthorized response :not_acceptable response :not_acceptable response :not_found end`

There is no any error. so my code is not effecting in sessions controller . what is the solution ? Thank you in advance .

Uysim commented 7 years ago

Found Solution Yet?

vishaltps commented 7 years ago

Not yet

SergeyMell commented 6 years ago

I managed to fix this issue and successfully generated swagger docs for devise controllers. (Actually, I used devise_token_auth but the solution is the same)

# Overriden devise controller
class Devise::RegistrationsController < DeviseTokenAuth::RegistrationsController

  include Swagger::Docs::Methods

  swagger_controller :registrations, 'Registration Management'

  swagger_api :create do
    summary 'Sign Up'
    param :query, :title, :string, :required, 'Band Title'
    param :query, :page, :integer, :optional, 'Pagination page number'
    param :query, :per_page, :integer, :optional, 'Number of items per page'
  end

  def create
    super
  end

end
# initializers/swagger_docs.rb
Swagger::Docs::Config.register_apis({
                                      '1.0' => {
                                        controller_base_path: '',
                                        api_file_path: 'public/apidocs',
                                        base_api_controllers: [ActionController::Base, Devise::RegistrationsController],
                                        base_path: Rails.application.config.domain,
                                        clean_directory: true
                                      }
                                    })
gisilbek commented 2 years ago

Hi sergeymell How did you manage to implement swagger with devise? I couldn't, the message tells me that I am not authorized.

Thanks for your answer