class Asserter::Permission

Public Class Methods

new(permission) click to toggle source

Initialize a new permission.

Parameters

Returns

  • Asserter::Permission - New instance.

# File lib/asserter/permission.rb, line 10
def initialize(permission)
  @permission_terms = permission.split('.')
end

Public Instance Methods

permit?(action) click to toggle source

Validate a permission against an action. Check each terms of a given permission against each terms of a given action and compare them.

If one of the permission’s terms contains a wildcard (*), we don’t compare it and skip to the next iteration.

Parameters

  • action - Action to validate.

Returns

  • Boolean - True if permission by pass action.

# File lib/asserter/permission.rb, line 27
def permit?(action)
  action_terms = action.split('.', @permission_terms.length)
  return false if action_terms.length != @permission_terms.length

  @permission_terms.zip(action_terms).each do |p_term, a_term|
    next if p_term == '*'
    return false if p_term != a_term
  end
end