Module: AccessControl::UserExtension
- Defined in:
- lib/access_control/user_extension.rb
Class Method Summary collapse
Instance Method Summary collapse
- #does_not_play(role) ⇒ Object
- #does_not_play?(role) ⇒ Boolean
- #has_any_permissions? ⇒ Boolean
- #has_permission?(perm) ⇒ Boolean
- #permissions ⇒ Object
- #plays(role) ⇒ Object
- #plays?(role) ⇒ Boolean
- #roles_attributes=(attributes) ⇒ Object
Class Method Details
.included(klass) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/access_control/user_extension.rb', line 3 def self.included(klass) klass.class_eval do include AccessControl::CommonMethods include AccessControl::Language has_one :permission, :as => :authorizable, :dependent => :destroy has_and_belongs_to_many :roles, :join_table => :user_roles alias_method :can?, :has_permission? accepts_nested_attributes_for :permission end end |
Instance Method Details
#does_not_play(role) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/access_control/user_extension.rb', line 36 def does_not_play role role = role.to_s if role.is_a? Symbol actual_role = Role.find_by_name(role.downcase) raise "#{role} does not exist" if actual_role.nil? roles.delete actual_role end |
#does_not_play?(role) ⇒ Boolean
32 33 34 |
# File 'lib/access_control/user_extension.rb', line 32 def does_not_play? role !plays? role end |
#has_any_permissions? ⇒ Boolean
67 68 69 |
# File 'lib/access_control/user_extension.rb', line 67 def !self..empty? end |
#has_permission?(perm) ⇒ Boolean
43 44 45 46 47 48 49 |
# File 'lib/access_control/user_extension.rb', line 43 def perm return true if perm roles.each do |role| return true if role. perm end false end |
#permissions ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/access_control/user_extension.rb', line 51 def set = self.. unless self..nil? set = [] if set.nil? set = [set] if set.is_a? String = [] roles.each do |role| role_perms = role.. << role_perms if role_perms.is_a? String = + role_perms if role_perms.is_a? Array end total = set + total.uniq end |
#plays(role) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/access_control/user_extension.rb', line 17 def plays role role = role.to_s if role.is_a? Symbol r = Role.find_by_name role.downcase raise "#{role} does not exist." if r.nil? roles << r true end |
#plays?(role) ⇒ Boolean
25 26 27 28 29 30 |
# File 'lib/access_control/user_extension.rb', line 25 def plays? role role = role.to_s if role.is_a? Symbol actual_role = Role.find_by_name(role.downcase) raise "#{role} does not exist" if actual_role.nil? roles.include? actual_role end |
#roles_attributes=(attributes) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/access_control/user_extension.rb', line 71 def roles_attributes=(attributes) if attributes.size == 1 self.roles.clear else keys = [] attributes.each_key do |id| keys << id unless id.to_i.eql? 0 end self.role_ids = keys end end |