Module: Monarchy::ActsAsUser::InstanceMethods
- Defined in:
- lib/monarchy/acts_as_user.rb
Instance Method Summary collapse
- #grant(role_name, resource) ⇒ Object
- #member_for(resource) ⇒ Object
- #revoke_access(resource) ⇒ Object
- #revoke_role(role_name, resource) ⇒ Object
- #role_for(resource) ⇒ Object
Instance Method Details
#grant(role_name, resource) ⇒ Object
25 26 27 28 29 30 |
# File 'lib/monarchy/acts_as_user.rb', line 25 def grant(role_name, resource) ActiveRecord::Base.transaction do Monarchy::Member.create(build_members(resource.hierarchy.memberless_ancestors_for(self))) grant_or_create_member(role_name, resource) end end |
#member_for(resource) ⇒ Object
32 33 34 |
# File 'lib/monarchy/acts_as_user.rb', line 32 def member_for(resource) resource.hierarchy.members.where("monarchy_members.user_id": id).first end |
#revoke_access(resource) ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/monarchy/acts_as_user.rb', line 36 def revoke_access(resource) self_and_descendant_ids = resource.hierarchy.self_and_descendant_ids ActiveRecord::Base.transaction do members_roles_for(self_and_descendant_ids).destroy_all try_revoke_ancestors_for(resource) end end |
#revoke_role(role_name, resource) ⇒ Object
45 46 47 48 49 50 51 52 53 |
# File 'lib/monarchy/acts_as_user.rb', line 45 def revoke_role(role_name, resource) members_roles = member_for(resource).members_roles if only_this_role(members_roles, role_name) revoke_access(resource) else members_roles.joins(:role).where("monarchy_roles.name": role_name).destroy_all end end |
#role_for(resource) ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/monarchy/acts_as_user.rb', line 15 def role_for(resource) ancestors_ids = resource.hierarchy.self_and_ancestors_ids Monarchy::Role.joins(:members) .where("((monarchy_roles.inherited = 't' "\ "AND monarchy_members.hierarchy_id IN (#{ancestors_ids.join(',')})) "\ "OR (monarchy_members.hierarchy_id = #{resource.hierarchy.id})) "\ "AND monarchy_members.user_id = #{id}") .order(level: :desc).first end |