Module: Sinatra

Defined in:
lib/janus/sinatra.rb

Defined Under Namespace

Modules: Janus

Instance Method Summary collapse

Instance Method Details

#janus(*resources) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/janus/sinatra.rb', line 25

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