require 'action_pack' # :nodoc: namespace module Authpwn # :nodoc: namespace module Routes # :nodoc: mixed into ActionPack's route mapper. module MapperMixin # Draws the routes for a session controller. # # The options hash accepts the following keys. # :controller:: the name of the controller; defaults to "session" for # SessionController # :paths:: the prefix of the route paths; defaults to the controller name # :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 def authpwn_session(options = {}) controller = options[:controller] || 'session' paths = options[:paths] || controller methods = options[:method_names] || 'session' 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}/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}" end end ActionDispatch::Routing::Mapper.send :include, MapperMixin end # namespace Authpwn::Routes end # namespace Authpwn