Sha256: 08e547bf904b5365cf391dd641482ff9ec9d0e13d22bbdc04790d7fbddebbbd4
Contents?: true
Size: 1.15 KB
Versions: 3
Compression:
Stored size: 1.15 KB
Contents
module Radmin class Authorization class DSLMethods def role(role_name, &block) #::Authorization.define_method method_name, &block #role_name = role_name.to_sym Radmin::Authorization.roles[role_name] ||= [] Radmin::Authorization.roles[role_name] << block end end include CanCan::Ability attr_accessor :user cattr_accessor :roles self.roles = {} def initialize(user) self.user = user run_role(:guest) unless self.user.role_symbols.any? self.user.role_symbols.each do |r| run_role(r) end end def includes(*role_names) role_names.each do |role_name| run_role(role_name.to_sym) end end def self.authorized?(user, action, subject) new(user).authorize!(action.to_sym, subject) true rescue CanCan::AccessDenied false end def self.define_rules(file) DSLMethods.new.instance_eval(File.read(file)) if File.exist?(file) end protected def run_role(role_name) self.class.roles[role_name].each { |block| instance_eval(&block) } if self.class.roles.include?(role_name) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
radmin-0.3.3 | lib/radmin/authorization.rb |
radmin-0.3.2 | lib/radmin/authorization.rb |
radmin-0.3.1 | lib/radmin/authorization.rb |