class Permify::PermissionMap

Provides a convenient way to store and retrieve permission data

Attributes

data[R]

Public Class Methods

new() click to toggle source
# File lib/permify/permission_map.rb, line 3
def initialize
  @data = {}
end

Public Instance Methods

find(resource, action) click to toggle source
# File lib/permify/permission_map.rb, line 13
def find(resource, action)
  resource_key, action_key = to_keys(resource, action)
  data.fetch(resource_key, {})[action_key]
end
store(resource, action, info) click to toggle source
# File lib/permify/permission_map.rb, line 7
def store(resource, action, info)
  resource_key, action_key = to_keys(resource, action)
  data[resource_key] ||= {}
  data[resource_key][action_key] = info
end

Private Instance Methods

to_keys(resource, action) click to toggle source

Transforms resource and action into keys for use in internal hashes

@param resource [Class, Object] resource object or its class @param action [String, to_sym]

@return keys [Array<Symbol>] array with resource and action key

# File lib/permify/permission_map.rb, line 28
def to_keys(resource, action)
  resource_class = resource.is_a?(Class) ? resource : resource.class
  [resource_class.name, action].map(&:to_sym)
end