Apache-OWA

 view release on metacpan or  search on metacpan

OWA.pm  view on Meta::CPAN

package Apache::OWA;

use strict;
use Apache::DBI;
use DBI;
use Apache::Constants qw(OK NOT_FOUND SERVER_ERROR AUTH_REQUIRED);
use Apache::Request ();
use Data::Dumper;

use vars qw($VERSION %owa_mapping %owa_version);

my $DEBUG = 0;
$VERSION = '0.7';

my (@dbinfo, $sth, $sql, $r, $dbh, @pass_vars);

# i like to buffer and then flush... YMMV.
#local $| = 1;

###################################################################
sub auth_handler ($) {
	$r = Apache::Request->new( shift );

	($DEBUG) = $r->dir_config('DEBUG');

	$r->warn('Apache::OWA::auth_handler start.') if ($DEBUG > 1);

	my ($sent_pw, $user, $db);

	# get username & password
	(my $res, $sent_pw) = $r->get_basic_auth_pw;
	return $res if $res != OK;
	$user = $r->connection->user;

	# need both username & password
	unless ( $user && $sent_pw) {
		$r->note_basic_auth_failure;
		$r->warn('Apache::OWA::auth_handler exit(AUTH_REQUIRED)') if ($DEBUG > 1);
		return AUTH_REQUIRED;
	}

	# get configuration
	if ($r->dir_config('DB_AUTH')) {

		$r->dir_config('DB') ?
		  $db =  $r->dir_config('DB') :
		  $db = $ENV{'ORACLE_SID'};

		@dbinfo = ($db,$user,$sent_pw);

	}
	elsif ( $r->dir_config('DB_PROC_AUTH') ) {
		@dbinfo = split(/:/,$r->dir_config('DAD'));
	}

	# don't authenticate sub-requests
	if ( $r->is_main() ) {

		if ( $r->dir_config('DB_AUTH') ) {
			$dbh = DBI->connect("dbi:Oracle:$dbinfo[0]",$dbinfo[1],$dbinfo[2],
					    { PrintError => 0, RaiseError => 0, AutoCommit => 1 })
			  || return AUTH_REQUIRED;

		}
		elsif ( $r->dir_config('DB_PROC_AUTH') ) {
			my ( $proc ) = $r->dir_config('DB_PROC_AUTH');
			$dbh = DBI->connect("dbi:Oracle:$dbinfo[0]",$dbinfo[1],$dbinfo[2],
					    { PrintError => 0, RaiseError => 0, AutoCommit => 1 })



( run in 2.153 seconds using v1.01-cache-2.11-cpan-99c4e6809bf )