Sha256: 6a14eb7697e1aa02a21ebe721c272660d13bbe4bc258e4971cd5089092d9d7dd

Contents?: true

Size: 1.72 KB

Versions: 3

Compression:

Stored size: 1.72 KB

Contents

module CmpaAuth
  
  #
  # Implementa a autenticação através de um before_filter.
  # Todo o controle é realizado através de dois ids armazenados na
  # sessão: current_user_id e lotacao_temporaria_id.
  #
  # O módulo também oferece suporte a algumas facilidades, como perguntar
  # se o usuário está logado.
  #
  module RailsHelpers
    def self.included(receiver) #:nodoc:
      receiver.class_eval do
        
        before_filter :cmpa_authenticate
        helper_method :current_user, :current_lotacao, :logged_in?
        
        rescue_from CmpaAuth::AccessDenied, :with => lambda { render_403 }
        
        #
        # Renderiza uma mensagem de erro HTML to tipo 403 (proibido) nos casos
        # em que a exceção CmpaAuth::AccessDenied for disparada.
        #
        def render_403
          render :template => "rescues/403", :status => 403, :layout => false
        end
        
        private
        
          def cmpa_authenticate
            redirect_to new_session_url unless logged_in?
          end
          
          #
          # Retorna o usuário logado na sessão.
          #
          def current_user
            @current_user ||= ::Pessoa.find_by_id(session[:current_user_id])
          end
          
          #
          # Retorna a lotação temporária atual (aquela que o usuário escolheu ao
          # logar no sistema).
          #
          def current_lotacao
            @current_lotacao ||= ::LotacaoTemporaria.find_by_id(session[:lotacao_temporaria_id])
          end
          
          # Verifica se o usuário está logado.
          def logged_in?
            current_user && current_lotacao
          end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cmpa_auth-1.0.6 lib/cmpa_auth/rails_helpers.rb
cmpa_auth-1.0.5 lib/cmpa_auth/rails_helpers.rb
cmpa_auth-1.0.4 lib/cmpa_auth/rails_helpers.rb