module Petergate::ActionController::Base
Constants
- ALLRESTDEP
Public Class Methods
included(base)
click to toggle source
# File lib/petergate/action_controller/base.rb, line 63 def self.included(base) base.extend(ClassMethods) base.helper_method :logged_in?, :forbidden!, :unauthorized! end
Public Instance Methods
custom_message()
click to toggle source
# File lib/petergate/action_controller/base.rb, line 104 def custom_message defined?(self.class.controller_message) ? self.class.controller_message : 'Permission Denied' end
forbidden!(msg = nil)
click to toggle source
# File lib/petergate/action_controller/base.rb, line 119 def forbidden!(msg = nil) respond_to do |format| format.any(:js, :json, :xml) do head(:forbidden) end format.html do destination = current_user.present? ? request.referrer || after_sign_in_path_for(current_user) : root_path redirect_to destination, notice: (msg || custom_message) end end end
logged_in?(*roles)
click to toggle source
# File lib/petergate/action_controller/base.rb, line 96 def logged_in?(*roles) current_user && current_user.has_roles?(*roles) end
parse_permission_rules(rules)
click to toggle source
# File lib/petergate/action_controller/base.rb, line 68 def parse_permission_rules(rules) rules = rules.inject({}) do |h, (k, v)| special_values = case v.class.to_s when "Symbol" v == :all ? self.class.all_actions : raise("No action for: #{v}") when "Hash" v[:except].present? ? self.class.except_actions(v[:except]) : raise("Invalid values for except: #{v.values}") when "Array" v else raise("No action for: #{v}") end h.merge({k => special_values}) end # Allows Array's of keys for he same hash. rules = rules.inject({}){|h, (k, v)| k.class == Array ? h.merge(Hash[k.map{|kk| [kk, v]}]) : h.merge(k => v) } end
permissions(rules = {all: [:index, :show], customer: [], wiring: []})
click to toggle source
# File lib/petergate/action_controller/base.rb, line 87 def permissions(rules = {all: [:index, :show], customer: [], wiring: []}) rules = parse_permission_rules(rules) allowances = [rules[:all]] current_user.roles.each do |role| allowances << rules[role] end if user_logged_in? allowances.flatten.compact.include?(action_name.to_sym) end
user_logged_in?()
click to toggle source
# File lib/petergate/action_controller/base.rb, line 100 def user_logged_in? !!current_user end