Sha256: 8870b956c35e5d6132e6a607a0f559922f9981afd969f00fa120c8f39118dad7

Contents?: true

Size: 1.23 KB

Versions: 4

Compression:

Stored size: 1.23 KB

Contents

require 'papers_please/version'
require 'papers_please/errors'
require 'papers_please/policy'
require 'papers_please/role'
require 'papers_please/permission'
require 'papers_please/rails/controller_methods'
require 'papers_please/railtie' if defined? Rails

module PapersPlease
  def self.permissions_table(policy_klass)
    require 'terminal-table'

    policy = policy_klass.new(:system)

    table = ::Terminal::Table.new do |t|
      t.headings = [
        'role',
        'subject',
        'permission',
        'has query?',
        'has predicate?',
        'granted by other?'
      ]

      policy.roles.each_with_index do |(name, role), index|
        t.add_separator unless index.zero?
        first_line_of_role = true

        role.permissions.group_by(&:subject).each do |subject, permissions|
          permissions.each do |permission|
            t.add_row [
              first_line_of_role ? name : nil,
              subject,
              permission.key,
              permission.query ? 'yes' : 'no',
              permission.predicate ? 'yes' : 'no',
              permission.granted_by_other? ? 'yes' : 'no',
            ]

            first_line_of_role = false
          end
        end
      end
    end
    puts table
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
papers_please-0.1.4 lib/papers_please.rb
papers_please-0.1.3 lib/papers_please.rb
papers_please-0.1.2 lib/papers_please.rb
papers_please-0.1.1 lib/papers_please.rb