Sha256: d64b3c8e93f3ac03bc8d691a5325887cc05647926a9bde09b41c6c60eea24805

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new
    can :read, Goldencobra::Article
    can :manage, :all
    user.roles.each do |role|
      role.permissions.each do |permission|
        if permission.subject_class == ":all"
          if permission.action.include?("not_")
            cannot permission.action.gsub("not_", "").to_sym, :all
          else
            can permission.action.to_sym, :all
          end
        elsif permission.subject_id.blank?
          if permission.action.include?("not_")
            cannot permission.action.gsub("not_", "").to_sym, permission.subject_class.constantize
          else
            can permission.action.to_sym, permission.subject_class.constantize
          end
        else
          if permission.action.include?("not_")
            cannot permission.action.gsub("not_", "").to_sym, permission.subject_class.constantize, :id => eval(permission.subject_id)
          else
            can permission.action.to_sym, permission.subject_class.constantize, :id => eval(permission.subject_id)
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
goldencobra-1.0.9.3 app/models/ability.rb