25 lines
761 B
Ruby
25 lines
761 B
Ruby
class AdminAbility
|
|
include CanCan::Ability
|
|
|
|
def initialize(member)
|
|
return if Ability.admin_permissions[member.role].nil?
|
|
|
|
# Iterate through member permissions
|
|
Ability.admin_permissions[member.role].each do |action, rules|
|
|
# Iterate through a list of member model access
|
|
rules.each do |rule|
|
|
# check if rule define attributes
|
|
if rule.is_a?(Hash)
|
|
model = rule.keys.first
|
|
attributes = rule[model].map(&:to_sym)
|
|
# example, can :update, Currency, [:visible, :name] (model attributes)
|
|
else
|
|
model = rule
|
|
# example, can :update, Currency
|
|
end
|
|
can action.to_sym, model == 'all' ? model.to_sym : model.constantize, attributes
|
|
end
|
|
end
|
|
end
|
|
end
|