Apache2-AuthAny
view release on metacpan or search on metacpan
lib/Apache2/AuthAny/DB.pm view on Meta::CPAN
package Apache2::AuthAny::DB;
use strict;
use DBI;
use Data::Dumper;
use Digest::MD5 qw(md5_hex);
my $dbHandle;
our $VERSION = '0.201';
sub new {
my $class = shift;
my $self = {};
unless ($dbHandle) {
my $dbUser = $ENV{AUTH_ANY_DB_USER} || die "Env variable AUTH_ANY_DB_USER required";
my $dbPasswordFile = $ENV{AUTH_ANY_DB_PW_FILE} || die "Env variable AUTH_ANY_DB_PW_FILE required";
open(PWD, "<$dbPasswordFile") || die "Could not read password file, '$dbPasswordFile'. $!";
my $dbPassword = <PWD>;
close(PWD) || die "ouch $!";
chomp $dbPassword; #remove the trailing new line
die "Could not get password" unless $dbPassword;
my $dbName = $ENV{AUTH_ANY_DB_NAME} || die "Env variable AUTH_ANY_DB_NAME required";
my $db;
$db = $ENV{AUTH_ANY_DB} || "mysql";
my $dsn = "database=$dbName";
my $dbHost = $ENV{AUTH_ANY_DB_HOST};
$dsn .= ";host=$dbHost" if $dbHost;
$dbHandle = DBI->connect("DBI:$db:$dsn", $dbUser, $dbPassword) or die "user: $dbUser, errstr: $DBI::errstr";
$dbHandle->do('SET CHARACTER SET utf8');
}
bless ($self, $class);
return $self;
}
sub useDB {
return;
my $self = shift;
my $auth_any_db = $self->{auth_any_db};
unless ($dbHandle->do("use $auth_any_db") ) {
die $dbHandle->errstr;
}
}
sub getValidRoles {
my $self = shift;
$self->useDB();
return $dbHandle->selectcol_arrayref('SELECT DISTINCT role FROM userRole');
}
sub getUserCookieByPID {
my $self = shift;
$self->useDB();
my $pid = shift;
return unless $pid;
my $getCookieSql = 'select * from userAACookie where PID = ? limit 1';
my $res = $dbHandle->selectrow_hashref($getCookieSql, undef, $pid);
if ($res) {
return $res;
} elsif ($dbHandle->errstr) {
die $dbHandle->errstr;
( run in 1.318 second using v1.01-cache-2.11-cpan-39bf76dae61 )