Skip to content

Instantly share code, notes, and snippets.

@aalvesjr
Last active December 11, 2015 23:18
Show Gist options
  • Save aalvesjr/4675679 to your computer and use it in GitHub Desktop.
Save aalvesjr/4675679 to your computer and use it in GitHub Desktop.
Refactor ApplicationController to GVAR
# -*- encoding:utf-8 -*-
class ApplicationController < ActionController::Base
protect_from_forgery
helper_method :current_user, :logged_in?
private
def logged_in?
current_user.present?
end
def current_user
@current_user ||= session[:user_id] && User.find_by_id(session[:user_id])
end
def self.require_logged_user(options = {})
before_filter :require_logged_user, options
end
def require_logged_user
return if logged_in?
redirect_to login_path, :notice => "É necessario estar logado para acessar"
end
# depois tentar tirar essas duplicacoes
# gerando dinamicamente os metodos
# refactored: 30/01/2013 - Armando
def require_role_generic
@require_role_generic = lambda do |role|
return if current_user.have_role?(:admin)
return if current_user.have_role?(role.to_sym)
redirect_to_dashboard
end
end
def self.require_role_for_assessoria
before_filter :require_role_for_assessoria
end
def require_role_for_assessoria
require_role_generic.call(:assessoria)
end
def self.require_role_for_servico
before_filter :require_role_for_servico
end
def require_role_for_servico
require_role_generic.call(:servico)
end
def self.require_role_for_payment
before_filter :require_role_for_payment
end
def require_role_for_payment
require_role_generic.call(:pagamento)
end
def self.require_role_for_receipt
before_filter :require_role_for_receipt
end
def require_role_for_receipt
require_role_generic.call(:recebimento)
end
def self.require_role_for_curso
before_filter :require_role_for_curso
end
def require_role_for_curso
require_role_generic.call(:curso)
end
def self.require_role_for_admin(options = {})
before_filter :require_role_for_admin, options
end
def require_role_for_admin
require_role_generic.call(:admin)
end
def redirect_to_dashboard
redirect_to dashboard_path, :notice => t("mensagens.msg0016")
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment