Sha256: b81d9374e0e3c0e2a1adfe5c18f8486338e94276f7e48cdabf5f874c00cbf02c

Contents?: true

Size: 823 Bytes

Versions: 7

Compression:

Stored size: 823 Bytes

Contents

require 'rolify/adapters/base'

module Rolify
  module Adapter
    class ResourceAdapter < ResourceAdapterBase
      def resources_find(roles_table, relation, role_name)
        roles = roles_table.classify.constantize.where(:name.in => Array(role_name), :resource_type => relation.to_s)
        resources = []
        roles.each do |role|
          if role.resource_id.nil?
            resources += relation.all
          else
            resources << role.resource
          end
        end
        resources.compact.uniq
      end

      def in(resources, user, role_names)
        roles = user.roles.where(:name.in => Array(role_names))
        return [] if resources.empty? || roles.empty?
        resources.delete_if { |resource| (resource.applied_roles & roles).empty? }
        resources
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
rolify-3.4.0 lib/rolify/adapters/mongoid/resource_adapter.rb
rolify-3.3.0 lib/rolify/adapters/mongoid/resource_adapter.rb
third-prestige-rolify-3.3.0.rc5 lib/rolify/adapters/mongoid/resource_adapter.rb
rolify-3.3.0.rc4 lib/rolify/adapters/mongoid/resource_adapter.rb
rolify-3.3.0.rc3 lib/rolify/adapters/mongoid/resource_adapter.rb
rolify-3.3.0.rc2 lib/rolify/adapters/mongoid/resource_adapter.rb
rolify-3.3.0.rc1 lib/rolify/adapters/mongoid/resource_adapter.rb