package Apache::AuthzGender2;

use strict;
use Text::GenderFromName qw(gender);
use Apache::Constants qw(:common);

my %G = ('M' => "male", 'F' => "female");

sub handler {
    my $r = shift;
    my $requires = $r->requires;
    return DECLINED unless $requires;
    my $user = ucfirst lc $r->connection->user;
    my $guessed_gender = uc(gender($user)) || 'M';

    my $explanation = <<END;
<TITLE>Unauthorized</TITLE>
<H1>You Are Not Authorized to Access This Page</H1>
Access to this page is limited to:
<OL>
END

    for my $entry (@$requires) {
	my($requirement, @rest) = split /\s+/, $entry->{requirement};
	if (lc $requirement eq 'user') {
	    foreach (@rest) { return OK if $user eq $_; }
	    $explanation .= "<LI>Users @rest.\n";
	} 
	elsif (lc $requirement eq 'gender') {
	    foreach (@rest) { return OK if $guessed_gender eq uc $_; }
	    $explanation .= "<LI>People of the @G{@rest} persuasion.\n";
	} 
	elsif (lc $requirement eq 'valid-user') {
	    return OK;
	}
    }

    $explanation .= "</OL>";
    
    $r->custom_response(AUTH_REQUIRED, $explanation);
    $r->note_basic_auth_failure;
    $r->log_reason("user $user: not authorized", $r->filename);
    return AUTH_REQUIRED;
}

1;
__END__
