Sha256: dbc5978e3e0c3094486863c8c1cb76d9601281a2dbd8cae9e07a4e5f2134cff5

Contents?: true

Size: 1015 Bytes

Versions: 8

Compression:

Stored size: 1015 Bytes

Contents

require "janus"
require "sinatra/base"

module Sinatra
  module Janus
    module Helpers
      def janus
        @janus ||= ::Janus::Manager.new(request, request.cookies)
      end

      def authenticate!(scope)
        janus.authenticate!(scope)
      end

      def signed_in?(scope)
        janus.authenticate?(scope)
      end
    end

    def self.registered(app)
      app.helpers Helpers
    end
  end

  def janus(*resources)
    resources.each do |plural|
      singular = plural.to_s.singularize
      klass = singular.camelize.constantize

      class_eval <<-EOV
        def authenticate_#{singular}!
          authenticate!(:#{singular})
        end

        def #{singular}_signed_in?
          signed_in?(:#{singular})
        end

        def current_#{singular}
          @current_#{singular} ||= janus.authenticate(:#{singular})
        end

        def #{singular}_session
          janus.session(:#{singular}) if #{singular}_signed_in?
        end
      EOV
    end
  end

  register Janus
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
janus-0.10.1 lib/janus/sinatra.rb
janus-0.10.0 lib/janus/sinatra.rb
janus-0.9.1 lib/janus/sinatra.rb
janus-0.9.0 lib/janus/sinatra.rb
janus-0.8.1 lib/janus/sinatra.rb
janus-0.8.0 lib/janus/sinatra.rb
janus-0.7.0 lib/janus/sinatra.rb
janus-0.6.0 lib/janus/sinatra.rb