Skip to content

Commit

Permalink
remove monkey patch on has_role?, was fixed on Rolify
Browse files Browse the repository at this point in the history
  • Loading branch information
joel committed Jan 30, 2015
1 parent 2a00e6c commit 3fbcc0d
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 20 deletions.
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
### VERSION 0.0.8

* bug fix
* remove monkey patch on has_role?, was fixed on Rolify

### VERSION 0.0.7

* bug fix
Expand Down Expand Up @@ -70,4 +75,4 @@
### VERSION 0.0.1

* Resctricted add_role method
* Resctricted with_role method
* Resctricted with_role method
8 changes: 5 additions & 3 deletions lib/scoped_rolify/finders.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ def with_any_scoped_role role_names, resource, options={}
self.joins(:roles).where(rolify_constraints(role_names, resource, options))
end

private

def rolify_constraints role_names, resource, options={}
raise 'You should give somes role' if role_names.nil? or Array(role_names).empty?
ScopedRolify::Policy.new(self, resource).check_persisted!
Expand All @@ -21,9 +23,9 @@ def rolify_constraints role_names, resource, options={}
field_type, field_id = begin
case scope
when :resource
[ :resource_type, :resource_id]
[ :resource_type, :resource_id ]
when :root
[ :root_resource_type, :root_resource_id]
[ :root_resource_type, :root_resource_id ]
end
end

Expand All @@ -40,4 +42,4 @@ def rolify_constraints role_names, resource, options={}
end

end
end
end
24 changes: 8 additions & 16 deletions lib/scoped_rolify/role.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,19 @@ def remove_scope_role(role_name, resource)
remove_resourced_role(role_name, resource)
end

def has_role?(role_name, resource = nil)
root_resource = resource.respond_to?(:root_resource) ? resource.send(resource.root_resource) : nil
private

def remove_resourced_role(role_name, resource)
if self.new_record?
self.roles.detect { |r| r.name.to_s == role_name.to_s && (r.resource == resource || resource.nil?) && (r.root_resource == root_resource || root_resource.nil?) }
self.roles = self.roles - [self.roles.detect { |r| r.name.to_s == role_name.to_s && r.resource == resource }]
else
self.class.adapter.where(self.roles, name: role_name, resource: resource, root_resource: root_resource)
end.present?
remove_role(role_name, resource)
end
end

private

def add_resourced_role(role_name, resource)
root_resource = resource.respond_to?(:root_resource) ? resource.send(resource.root_resource) : nil

if self.new_record?
role = self.class.adapter.role_class.new(name: role_name, resource: resource, root_resource: root_resource).tap do |role|
self.roles << role
Expand Down Expand Up @@ -68,13 +68,5 @@ def add_role_with_root(role_name, resource, root_resource)
end
end

def remove_resourced_role(role_name, resource)
if self.new_record?
self.roles = self.roles - [self.roles.detect { |r| r.name.to_s == role_name.to_s && r.resource == resource }]
else
remove_role(role_name, resource)
end
end

end
end
end

0 comments on commit 3fbcc0d

Please sign in to comment.