class SimpleAccessControl::AccessControlHandler
Public Instance Methods
check(role, user)
click to toggle source
Check if a role applies to a user
check(‘admin’, user)
@return Boolean
# File lib/simple_access_control/access_control_handler.rb, line 34 def check(role, user) if user.nil? || !user.respond_to?(:roles) false elsif (role.nil? || role.empty?) true else user.roles.map{ |r| r.title.downcase }.include? role.downcase end end
parse(string)
click to toggle source
Parse a string and do some horrific ruby magic to instance eval it! : (
# File lib/simple_access_control/access_control_handler.rb, line 25 def parse(string) string.gsub(/(\|+|\&+)/) { $1[0,1]*2 }.gsub(/([^()|&! ]+)/) { "check('#{$1}', user)" } end
process(string, user)
click to toggle source
Process a string rule and a user
# File lib/simple_access_control/access_control_handler.rb, line 13 def process(string, user) return check('', user) if (string.nil? || string.empty?) if simple_rule?(string) check(string, user) else # This is awful! instance_eval("!! (#{parse(string)})") # give it the going-over end end
simple_rule?(string)
click to toggle source
Is this is a simple or compound rule?
@return Boolean
# File lib/simple_access_control/access_control_handler.rb, line 7 def simple_rule? string string =~ /^([^()\|&!]+)$/ end