lib/access-granted/role.rb in access-granted-1.0.4 vs lib/access-granted/role.rb in access-granted-1.1.0
- old
+ new
@@ -6,11 +6,11 @@
@user = user
@name = name
@conditions = conditions
@block = block
@permissions = []
- @permissions_by_action = {}
+
if @block
instance_eval(&@block)
else
configure
end
@@ -26,12 +26,14 @@
def cannot(action, subject, conditions = {}, &block)
add_permission(false, action, subject, conditions, block)
end
def find_permission(action, subject)
- permissions_by_action(action).detect do |permission|
- permission.matches_subject?(subject) && permission.matches_conditions?(subject)
+ permissions.detect do |permission|
+ permission.action == action &&
+ permission.matches_subject?(subject) &&
+ permission.matches_conditions?(subject)
end
end
def applies_to?(user)
case @conditions
@@ -50,35 +52,27 @@
end
end
def add_permission(granted, action, subject, conditions, block)
prepare_actions(action).each do |a|
- raise DuplicatePermission if permission_exists?(a, subject)
- @permissions << Permission.new(granted, a, subject, @user, conditions, block)
- @permissions_by_action[a] ||= []
- @permissions_by_action[a] << @permissions.size - 1
+ raise DuplicatePermission if find_permission(a, subject)
+ permissions << Permission.new(granted, a, subject, @user, conditions, block)
end
end
private
def permission_exists?(action, subject)
- permissions_by_action(action).any? do |permission|
+ permissions.any? do |permission|
permission.matches_subject?(subject)
end
end
def prepare_actions(action)
if action == :manage
actions = [:read, :create, :update, :destroy]
else
actions = Array(*[action])
- end
- end
-
- def permissions_by_action(action)
- (@permissions_by_action[action] || []).map do |index|
- @permissions[index]
end
end
end
end