module Authpwn::Routes::MapperMixin

Public Instance Methods

authpwn_session(options = {}) click to toggle source

Draws the routes for a session controller.

@param [Object] options @option options [String] controller the name of the controller; defaults to

"session" for SessionController

@option options [String] paths the prefix of the route paths; defaults to

the controller name

@option options [String] method_names the root of name used in the path

methods; defaults to "session", which will generate names like
session_path, new_session_path, and token_session_path

@option options [String] omniauth_path_prefix the prefix of the OmniAuth

route paths; defaults to '/auth'; this option should equal
OmniAuth.config.path_prefix
# File lib/authpwn_rails/routes.rb, line 24
def authpwn_session(options = {})
  controller = options[:controller] || 'session'
  paths = options[:paths] || controller
  methods = options[:method_names] || 'session'
  oa_prefix = options[:omniauth_path_prefix] || '/auth'

  get "/#{paths}/token/:code", controller: controller, action: 'token',
                               as: :"token_#{methods}"

  get "/#{paths}", controller: controller, action: 'show',
                   as: :"#{methods}"
  get "/#{paths}/new", controller: controller, action: 'new',
                       as: :"new_#{methods}"
  post "/#{paths}", controller: controller, action: 'create'
  delete "/#{paths}", controller: controller, action: 'destroy'

  get "/#{paths}/api_token", controller: controller, action: 'api_token',
                             as: "api_token_#{methods}"
  delete "/#{paths}/api_token", controller: controller,
                                action: 'destroy_api_token',
                                as: "destroy_api_token_#{methods}"
  get "/#{paths}/change_password", controller: controller,
                                  action: 'password_change',
                                  as: "change_password_#{methods}"
  post "/#{paths}/change_password", controller: controller,
                                   action: 'change_password'
  post "/#{paths}/reset_password", controller: controller,
                                   action: 'reset_password',
                                   as: "reset_password_#{methods}"

  match "#{oa_prefix}/:provider/callback", via: [:get, :post],
                                           controller: controller,
                                           action: 'omniauth',
                                           as: "omniauth_#{methods}"
  get "#{oa_prefix}/failure", controller: controller,
                              action: 'omniauth_failure',
                              as: "omniauth_failure_#{methods}"
end