| #!/usr/bin/env ruby |
| PAGETITLE = "Board Agenda Auth Tester" # Wvisible:board tools |
| # |
| # Small CGI to help debug board agenda authentication issues |
| # |
| |
| $LOAD_PATH.unshift '/srv/whimsy/lib' |
| require 'wunderbar' |
| require 'wunderbar/bootstrap' |
| require 'whimsy/asf/rack' |
| require 'whimsy/asf/agenda' |
| |
| _html do |
| _whimsy_body( |
| title: PAGETITLE, |
| related: { |
| '/board/minutes/' => 'Board Meeting Minutes (public)', |
| '/board/agenda/' => 'Board Agenda Tool (restricted)', |
| '/status/' => 'Whimsy Server Status' |
| }, |
| helpblock: -> { |
| _ 'This script checks your authorization to use the agenda tool, and checks if you are listed as attending the current board meeting in the upcoming official agenda.' |
| } |
| ) do |
| FOUNDATION_BOARD = ASF::SVN['foundation_board'] |
| agendafile = Dir[File.join(FOUNDATION_BOARD, 'board_agenda_*.txt')].sort.last.untaint |
| agenda = ASF::Board::Agenda.parse(File.read(agendafile)) |
| roll = agenda.find {|item| item['title'] == 'Roll Call'} |
| |
| person = ASF::Auth.decode(env) |
| _p %{ Your data for meeting: #{File.basename(agendafile)} } |
| _table do |
| _tr do |
| _td 'Your id' |
| _td person.id |
| end |
| |
| _tr do |
| _td 'ASF Member?' |
| _td person.asf_member? |
| end |
| |
| _tr do |
| _td 'PMC chair?' |
| _td ASF.pmc_chairs.include? person |
| end |
| |
| _tr do |
| _td 'Attending' |
| _td roll['people'].keys.include? person.id |
| end |
| end |
| end |
| end |