Sha256: b25505b7b69c1701900197e5b2b12f4a9b853b5c7010395271802061a5a436c8

Contents?: true

Size: 1.72 KB

Versions: 4

Compression:

Stored size: 1.72 KB

Contents

module Sinatra
  module WardenPlugin
    module WardenHelpers
      # Returns the current authenticated user
      def current_user
        warden_handler.user
      end

      # Login the user through the specified warden strategy
      def authenticate_user!
        warden_handler.authenticate!
      end

      # Signs out the user
      def logout_user!
        warden_handler.logout
      end

      # Returns true if the user has authenticated
      def logged_in?
        warden_handler.authenticated?
      end

      # If a block is given, only yields the content if the user is authenticated
      # If no block is given, returns true if the user is logged in
      def authenticated?(&block)
        if block_given?
          return '' unless logged_in?
          authenticated_content = capture_html(&block)
          concat_content(authenticated_content)
        else
          return logged_in?
        end
      end

      # If a block is given, only yields the content if the user is unregistered
      # If no block is given, returns true if the user is not logged in
      def unregistered?(&block)
        if block_given?
          return '' if logged_in?
          unregistered_content = capture_html(&block)
          concat_content(unregistered_content)
        else
          return !logged_in?
        end
      end

      # Forces a user to return to a fail path unless they are authorized
      # Used to require a user be authenticated before routing to an action
      def must_be_authorized!(failure_path=nil)
        redirect(failure_path ? failure_path : '/') unless authenticated?
      end

      # Returns the raw warden authentication handler
      def warden_handler
        request.env['warden']
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
darkhelmet-sinatra_more-0.3.36 lib/sinatra/warden_plugin/warden_helpers.rb
darkhelmet-sinatra_more-0.3.35 lib/sinatra/warden_plugin/warden_helpers.rb
darkhelmet-sinatra_more-0.3.34 lib/sinatra/warden_plugin/warden_helpers.rb
darkhelmet-sinatra_more-0.3.33 lib/sinatra/warden_plugin/warden_helpers.rb