Apache2-AuthCASpbh

 view release on metacpan or  search on metacpan

lib/Apache2/AuthCASpbh/UserAgent.pm  view on Meta::CPAN

	my ($class, %conf) = @_;

	exists($conf{apache_r}) or Carp::croak('apache_r argument missing');
	my $r = $conf{apache_r}; delete($conf{apache_r});

	my $cas_cookie_map;
	if (exists($conf{cas_cookie_map})) {
		$cas_cookie_map = $conf{cas_cookie_map}; delete($conf{cas_cookie_map});
	}

	my $self = $class->SUPER::new(%conf);

	$self->{apache_r} = $r;
	$self->{_log} = new Apache2::AuthCASpbh::Log(__PACKAGE__, $r->log);

	if (defined($cas_cookie_map)) {
		$self->{cas_cookie_map} = $cas_cookie_map;
		$self->cookie_jar({}) unless exists($self->{cookie_jar});
	}

	my $dir_cfg = Apache2::Module::get_config('Apache2::AuthCASpbh',

lib/Apache2/AuthCASpbh/UserAgent.pm  view on Meta::CPAN

	my ($self, $new_request, $response) = @_;
	my $_log = $self->{_log} ;
	my $debug_level = $self->{debug_level};

	if ($response->header('Location') =~ $self->{cas_login_url}) {
		$_log->l($debug_level, 'denying ' . $response->header('Location') .
				       ' redirect, matches ' . $self->{cas_login_url});
		return 0;
	}

	return $self->SUPER::redirect_ok($new_request, $response);
}

sub request {
	my ($self, $request, $arg, $size, $previous) = @_;
	my $_log = $self->{_log};
	my $debug_level = $self->{debug_level};
	my $cas_session = $self->{apache_r}->pnotes('cas_session');
	
	$_log->l('warn', 'no session found for request') and goto NO_SET_COOKIE
		unless defined($cas_session);

lib/Apache2/AuthCASpbh/UserAgent.pm  view on Meta::CPAN

			else {
  				$_log->l('warn', "session tie $cas_session failed - $session");
			}

			last;
		}
	}

	NO_SET_COOKIE:

	my $response = $self->SUPER::request($request, $arg, $size, $previous);

	if ($response->code() == 302 && $response->header('Location') =~ $self->{cas_login_url}) {
		$_log->l($debug_level, "request redirected to CAS login URL $self->{cas_login_url}");

		if (!exists($self->{cas_ua})) {
			$self->{cas_ua} = LWP::UserAgent->new(timeout => 10, keep_alive => 1);
		}

		my $qs = $response->header('Location'); $qs =~ s/^[^\?]+\?//;
		my $q = CGI->new($self->{apache_r}, \$qs);



( run in 1.355 second using v1.01-cache-2.11-cpan-49f99fa48dc )