Sha256: 16f6dda1c4a7050447c5454001297de5e9fd5e86716c3975c849bfa22a6feca4

Contents?: true

Size: 683 Bytes

Versions: 6

Compression:

Stored size: 683 Bytes

Contents

require 'i_am_i_can/role/definition'
require 'i_am_i_can/role/assignment'
require 'i_am_i_can/role/grouping'
require 'i_am_i_can/role_group/definition'

module IAmICan
  module Role
    extend ActiveSupport::Concern

    class_methods do
      def which(name:, **conditions)
        find_by!(name: name, **conditions)
      end

      def names
        self.pluck(:name).map(&:to_sym)
      end
    end

    included do
      define_model_callbacks :permission_assign, :cancel_permission_assign, :permission_update

      # `can? :manage, User` / `can? :manage, obj: User`
      def can? action, o = nil, obj: o
        _permissions.matched?(action, obj)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
i_am_i_can-4.3.3 lib/i_am_i_can/role.rb
i_am_i_can-4.3.2 lib/i_am_i_can/role.rb
i_am_i_can-4.3.1 lib/i_am_i_can/role.rb
i_am_i_can-4.3.0 lib/i_am_i_can/role.rb
i_am_i_can-4.2.0 lib/i_am_i_can/role.rb
i_am_i_can-4.1.0 lib/i_am_i_can/role.rb