Sha256: 6f84eaf33209afc102e1fe78f0c495f1f8ab33d1bcd57a225f9d5da4cfd69d3a

Contents?: true

Size: 1.62 KB

Versions: 4

Compression:

Stored size: 1.62 KB

Contents

require 'capcoauth/rails/routes/mapping'
require 'capcoauth/rails/routes/mapper'

module Capcoauth
  module Rails
    class Routes
      module Helper
        def use_capcoauth(options = {}, &block)
          Capcoauth::Rails::Routes.new(self, &block).generate_routes!(options)
        end
      end

      def self.install!
        ActionDispatch::Routing::Mapper.send :include, Capcoauth::Rails::Routes::Helper
      end

      attr_accessor :routes

      def initialize(routes, &block)
        @routes, @block = routes, block
      end

      def generate_routes!(options)
        @mapping = Mapper.new.map(&@block)
        routes.scope options[:scope] || 'auth', as: 'auth' do
          map_routes(:login, :login_routes)
          map_routes(:logout, :logout_routes)
          map_routes(:callback, :callback_routes)
        end
      end

      private

      def map_routes(name, method)
        unless @mapping.skipped?(name)
          send method, @mapping[name]
        end
      end

      def login_routes(mapping)
        routes.resource(
          :login,
          path: 'login',
          only: [:show], as: mapping[:as],
          controller: mapping[:controllers]
        )
      end

      def logout_routes(mapping)
        routes.resource(
          :logout,
          path: 'logout',
          only: [:show, :delete], as: mapping[:as],
          controller: mapping[:controllers]
        )
      end

      def callback_routes(mapping)
        routes.resource(
          :callback,
          path: 'callback',
          only: [:show], as: mapping[:as],
          controller: mapping[:controllers]
        )
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
capcoauth-0.1.4 lib/capcoauth/rails/routes.rb
capcoauth-0.1.3 lib/capcoauth/rails/routes.rb
capcoauth-0.1.2 lib/capcoauth/rails/routes.rb
capcoauth-0.1.1 lib/capcoauth/rails/routes.rb