You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by ru...@apache.org on 2016/06/13 20:00:50 UTC
[whimsy] branch master updated: allow invited guests to see board
agenda
This is an automated email from the ASF dual-hosted git repository.
rubys pushed a commit to branch master
in repository https://git-dual.apache.org/repos/asf/whimsy.git
The following commit(s) were added to refs/heads/master by this push:
new a8aa673 allow invited guests to see board agenda
a8aa673 is described below
commit a8aa673d7152514115356b6c0b89a2a7ca2fe048
Author: Sam Ruby <ru...@intertwingly.net>
AuthorDate: Mon Jun 13 16:00:20 2016 -0400
allow invited guests to see board agenda
---
lib/whimsy/asf/rack.rb | 7 ++++---
www/board/agenda/config.ru | 9 ++++++++-
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/lib/whimsy/asf/rack.rb b/lib/whimsy/asf/rack.rb
index 60468eb..50b8cb6 100644
--- a/lib/whimsy/asf/rack.rb
+++ b/lib/whimsy/asf/rack.rb
@@ -59,18 +59,19 @@ module ASF
# 'use' the following class in config.ru to limit access
# to the application to ASF members and officers and the accounting group.
class MembersAndOfficers < Rack::Auth::Basic
- def initialize(app)
+ def initialize(app, &block)
super(app, "ASF Members and Officers", &proc {})
+ @block = block
end
- def call(env)
+ def call(env, &block)
authorized = ( ENV['RACK_ENV'] == 'test' )
person = ASF::Auth.decode(env)
- authorized ||= DIRECTORS[env.user]
authorized ||= person.asf_member?
authorized ||= ASF.pmc_chairs.include? person
+ authorized ||= @block.call(env) if @block
if not authorized
accounting = ASF::Authorization.new('pit').
diff --git a/www/board/agenda/config.ru b/www/board/agenda/config.ru
index 2068724..694c5bb 100644
--- a/www/board/agenda/config.ru
+++ b/www/board/agenda/config.ru
@@ -3,7 +3,14 @@ require File.expand_path('../main.rb', __FILE__)
require 'whimsy/asf/rack'
# https://svn.apache.org/repos/infra/infrastructure/trunk/projects/whimsy/asf/rack.rb
-use ASF::Auth::MembersAndOfficers
+use ASF::Auth::MembersAndOfficers do |env|
+ # additionally authorize all invited guests
+ agenda = dir('board_agenda_*.txt').sort.last
+ Agenda.parse(agenda, :full)
+ roll = Agenda[agenda][:parsed].find {|item| item['title'] == 'Roll Call'}
+ roll['people'].keys.include? env['REMOTE_USER']
+end
+
use ASF::HTTPS_workarounds
run Sinatra::Application
--
To stop receiving notification emails like this one, please contact
['"commits@whimsical.apache.org" <co...@whimsical.apache.org>'].