Module: ASF::Auth

Defined in:
lib/whimsy/asf/rack.rb

Defined Under Namespace

Classes: Committers, MembersAndOfficers

Constant Summary collapse

DIRECTORS =
{
  'curcuru'     => 'sc',
  'bdelacretaz' => 'bd',
  'isabel'      => 'id',
  'marvin'      => 'mh',
  'jim'         => 'jj',
  'mattmann'    => 'cm',
  'brett'       => 'bp',
  'gstein'      => 'gs',
  'markt'       => 'mt'
}

Class Method Summary collapse

Class Method Details

.decode(env) ⇒ Object

decode HTTP authorization, when present



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/whimsy/asf/rack.rb', line 21

def self.decode(env)
  class << env; attr_accessor :user, :password; end

  auth = env['HTTP_AUTHORIZATION'] || ENV['HTTP_AUTHORIZATION']

  if auth.to_s.empty?
    env.user = env['REMOTE_USER'] || ENV['USER'] || Etc.getpwuid.name
  else
    require 'base64'
    env.user, env.password = Base64.
      decode64(auth[/^Basic ([A-Za-z0-9+\/=]+)$/,1].to_s).split(':',2)
  end

  env['REMOTE_USER'] ||= env.user

  ASF::Person.new(env.user)
end