module PapersPlease

Constants

VERSION

Public Class Methods

permissions_table(policy_klass) click to toggle source
# File lib/papers_please.rb, line 10
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