HTTPD-User-Manage
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/HTTPD/UserAdmin/SQL.pm view on Meta::CPAN
# $Id: SQL.pm,v 1.3 2007/01/23 16:18:56 lstein Exp $
package HTTPD::UserAdmin::SQL;
use DBI;
use Carp ();
use strict;
use vars qw(@ISA $VERSION);
@ISA = qw(HTTPD::UserAdmin);
$VERSION = (qw$Revision: 1.3 $)[1];
my %Default = (HOST => "", #server hostname
DB => "", #database name
USER => "", #database login name
AUTH => "", #database login password
DRIVER => "mSQL", #driver for DBI
USERTABLE => "", #table with field names below
NAMEFIELD => "user", #field for the name
PASSWORDFIELD => "password", #field for the password
);
sub new {
my($class) = shift;
my $self = bless { %Default, @_ } => $class;
$self->_check(qw(DRIVER DB USERTABLE));
$self->db($self->{DB});
return $self;
}
sub DESTROY {
my($self) = @_;
$self->{'_DBH'}->disconnect;
}
sub db {
my($self,$db) = @_;
my $old = $self->{DB};
return $old unless $db;
$self->{DB} = $db;
if(defined $self->{'_DBH'}) {
$self->{'_DBH'}->disconnect;
}
# LS 12/1/97 -- Be sure to use Msql-modules-1.1814 (at least).
# Do NOT use the older DBD-mSQL-0.65.
# The connect() method changed.
my $source = sprintf("dbi:%s:%s",@{$self}{qw(DRIVER DB)});
$source .= ":$self->{HOST}" if $self->{HOST};
$source .= ":$self->{PORT}" if $self->{HOST} and $self->{PORT};
$self->{'_DBH'} = DBI->connect($source,@{$self}{qw(USER AUTH)} )
|| Carp::croak($DBI::errstr);
return $old;
}
package HTTPD::UserAdmin::SQL::_generic;
use vars qw(@ISA);
@ISA = qw(HTTPD::UserAdmin::SQL);
sub add {
my($self, $username, $passwd, $other) = @_;
return(0, "add_user: no user name!") unless $username;
return(0, "add_user: no password!") unless $passwd;
return(0, "user '$username' already exists!")
if $self->exists($username);
my(%f) = ($self->{NAMEFIELD}=>$username,
$self->{PASSWORDFIELD}=>$self->encrypt($passwd));
if ($other) {
Carp::croak('Specify other fields as a hash ref for SQL databases')
unless ref($other) eq 'HASH';
foreach (keys %{$other}) {
$f{$_} = $other->{$_};
}
}
my $statement =
sprintf("INSERT into %s (%s)\n VALUES (%s)\n",
$self->{USERTABLE},
join(',',keys %f),
join(',', map {$self->_is_string($_,$f{$_}) ? "'$f{$_}'" : $f{$_} } keys %f));
print STDERR $statement if $self->debug;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.561 second using v1.00-cache-2.02-grep-82fe00e-cpan-f5108d614456 )