Apache-AuthTicket
view release on metacpan or search on metacpan
lib/Apache/AuthTicket/Base.pm view on Meta::CPAN
or die "DBI Connect failure: ", DBI->errstr, "\n";
return $dbh;
}
sub check_credentials {
my ($self, $user, $password) = @_;
my ($table, $user_field, $pass_field) = $self->user_table;
my ($stmt, @bind) =
$self->sql->select($table, $pass_field, {$user_field => $user});
my ($db_pass) = eval {
$self->dbh->selectrow_array($stmt, undef, @bind);
};
if ($@) {
$self->dbh->rollback;
return 0;
}
unless (defined $db_pass) {
# user not in database
return 0;
}
lib/Apache/AuthTicket/Base.pm view on Meta::CPAN
my ($self, $version) = @_;
my $dbh = $self->dbh;
my ($secret_table, $secret_field, $secret_version_field) = $self->secret_table;
# generate SQL
my @fields = ($secret_field, $secret_version_field);
my %where = ( $secret_version_field => $version ) if defined $version;
my $order = " $secret_version_field DESC LIMIT 1 ";
my ($stmt, @bind) = $self->sql->select($secret_table, \@fields, \%where, $order);
return eval {
$dbh->selectrow_array($stmt, undef, @bind);
};
if ($@) {
$dbh->rollback;
die $@;
}
}
sub secret_version {
my $self = shift;
lib/Apache/AuthTicket/Base.pm view on Meta::CPAN
########## SERVER SIDE HASH MANAGEMENT METHODS
sub _update_ticket_timestamp {
my ($self, $hash) = @_;
my $time = $self->request->request_time;
my $dbh = $self->dbh;
my ($table, $tick_field, $ts_field) = $self->ticket_table;
my ($query, @bind) = $self->sql->update($table,
{$ts_field => $time},
{$tick_field => $hash});
eval {
my $sth = $dbh->do($query, undef, @bind);
$dbh->commit unless $dbh->{AutoCommit};
};
if ($@) {
$dbh->rollback;
die $@;
}
}
# boolean _ticket_idle_timeout(String hash, Hashref ticket)
#
lib/Apache/AuthTicket/Base.pm view on Meta::CPAN
else {
return 0;
}
}
sub save_hash {
my ($self, $hash) = @_;
my ($table, $tick_field, $ts_field) = $self->ticket_table;
my ($query, @bind) = $self->sql->insert($table, {
$tick_field => $hash,
$ts_field => $self->request->request_time });
my $dbh = $self->dbh;
eval {
my $sth = $dbh->do($query, undef, @bind);
$dbh->commit unless $dbh->{AutoCommit};
};
if ($@) {
$dbh->rollback;
die $@;
}
}
sub delete_hash {
my ($self, $hash) = @_;
my ($table, $tick_field) = $self->ticket_table;
my ($query, @bind) = $self->sql->delete($table, { $tick_field => $hash });
my $dbh = $self->dbh;
eval {
my $sth = $dbh->do($query, undef, @bind);
$dbh->commit unless $dbh->{AutoCommit} || 0;
};
if ($@) {
$dbh->rollback;
die $@;
}
}
sub is_hash_valid {
my ($self, $hash) = @_;
my ($table, $tick_field, $ts_field) = $self->ticket_table;
my ($query, @bind) = $self->sql->select($table, [$tick_field, $ts_field],
{ $tick_field => $hash });
my $dbh = $self->dbh;
my ($db_hash, $ts) = (undef, undef);
eval {
($db_hash, $ts) = $dbh->selectrow_array($query, undef, @bind);
$self->{DBTicketTimeStamp} = $ts; # cache for later use.
};
if ($@) {
$dbh->rollback;
die $@;
}
return (defined $db_hash and $db_hash eq $hash) ? 1 : 0;
}
( run in 1.714 second using v1.01-cache-2.11-cpan-2398b32b56e )