Module: RoleAuthorization::Roles::Manager::InstanceMethods
- Included in:
- RoleAuthorization::Roles::Manager
- Defined in:
- lib/role_authorization/roles/manager.rb
Instance Method Summary collapse
- #any(new_scope = nil) ⇒ Object
- #creation_rules(rules) ⇒ Object
- #group(groups) ⇒ Object
- #nickname(nicknames) ⇒ Object
-
#persist! ⇒ Object
make sure our defined roles are in the database remove any roles taken out.
- #roles(*options) ⇒ Object
- #setup(klass) ⇒ Object
Instance Method Details
#any(new_scope = nil) ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/role_authorization/roles/manager.rb', line 54 def any(new_scope = nil) case new_scope when nil [global_roles, object_roles.values].flatten when :global global_roles else object_roles[new_scope] end end |
#creation_rules(rules) ⇒ Object
40 41 42 43 44 |
# File 'lib/role_authorization/roles/manager.rb', line 40 def creation_rules(rules) rules.each_pair do |key, allowed_roles| @creations[key] = allowed_roles.flatten.uniq end end |
#group(groups) ⇒ Object
46 47 48 |
# File 'lib/role_authorization/roles/manager.rb', line 46 def group(groups) @group_definitions = groups end |
#nickname(nicknames) ⇒ Object
50 51 52 |
# File 'lib/role_authorization/roles/manager.rb', line 50 def nickname(nicknames) @nicknames = nicknames end |
#persist! ⇒ Object
make sure our defined roles are in the database remove any roles taken out
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/role_authorization/roles/manager.rb', line 67 def persist! return if klass.nil? return unless klass.new.respond_to?(:nickname) persisted_roles = klass.all.inject({}) {|hash, record| hash[record.name.to_sym] = record; hash} [global_roles, object_roles.values].flatten.map do |role_name| if persisted_roles.delete(role_name).nil? klass.create(:name => role_name.to_s, :nickname => nicknames[role_name].to_s) end end # if we have persisted roles left we delete them persisted_roles.values.map(&:destroy) end |
#roles(*options) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/role_authorization/roles/manager.rb', line 32 def roles(*) @global_roles, @object_roles = if .last.is_a?(Hash) [.pop, ].reverse else [, {}] end end |
#setup(klass) ⇒ Object
22 23 24 25 26 27 28 29 30 |
# File 'lib/role_authorization/roles/manager.rb', line 22 def setup(klass) @klass = klass klass.send(:include, RoleAuthorization::Roles::Role) # now that we know what class to use, create our role groups (@group_definitions || {}).each_pair do |group_name, roles| @groups[group_name.to_sym] = RoleAuthorization::Roles::RoleGroup.new(klass, roles) end end |