module PeRbac::Permission

Public Class Methods

get_permissions() click to toggle source

Permissions

# File lib/pe_rbac/permission.rb, line 24
def self.get_permissions()
  resp = PeRbac::Core::request(:get, "/types")
  resp ? JSON.parse(resp.body) : false
end
safe_permissions(want_perms) click to toggle source

Not all requested permissions may be avaiable per use (change between versions). To mitigate this, requeste the list of all valid permissions and remove any permissions that are not in the list from the final list of permissions to request

# File lib/pe_rbac/permission.rb, line 33
def self.safe_permissions(want_perms)
  safe_perms  = []
  valid_perms = Permission::get_permissions()

  if want_perms
    want_perms.each { |wp|
      valid = false
      valid_perms.each { |vp|
        if  wp['object_type'] == vp['object_type']
          vp['actions'].each { |va|
            # scan for valid action inside object permissions
            if wp['action'] == va['name']
              valid = true
            end
          }
        end
      }
      if valid
        safe_perms << wp
      end
    }
  end
  safe_perms
end