Apache-Auth-UserDB
view release on metacpan or search on metacpan
lib/Apache/Auth/User.pm view on Meta::CPAN
use constant TRUE => (0 == 0);
use constant FALSE => not TRUE;
# Interface:
##############################################################################
sub new;
sub name;
sub password;
sub password_digest;
# Implementation:
##############################################################################
sub new {
my ($class, %options) = @_;
my $self = bless(\%options, $class);
return $self;
}
sub name {
my ($self, @value) = @_;
$self->{name} = $value[0] if @value;
return $self->{name};
}
sub password {
my ($self, @value) = @_;
if (@value) {
$self->{password} = $value[0];
$self->{password_digest} = undef;
}
return $self->{password};
}
sub password_digest {
my ($self, @value) = @_;
if (@value) {
$self->{password_digest} = $value[0];
}
elsif (not defined($self->{password_digest})) {
$self->{password_digest} = $self->_build_password_digest();
}
return $self->{password_digest};
}
TRUE;
lib/Apache/Auth/User/Basic.pm view on Meta::CPAN
use constant TRUE => (0 == 0);
use constant FALSE => not TRUE;
use constant crypt_salt_characters => ('.', '/', '0'..'9', 'A'..'Z', 'a'..'z');
# Interface:
##############################################################################
sub signature;
sub password;
# Implementation:
##############################################################################
sub signature {
my ($self) = @_;
return $self->name;
}
sub password {
my ($self, @value) = @_;
if (@value) {
$self->{password} = $value[0];
$self->{password_digest} = $self->_build_password_digest
if defined($self->{password});
}
return $self->{password};
}
sub _build_password_digest {
my ($self) = @_;
croak("Unable to build password digest from incomplete data")
if not defined($self->{password});
return crypt(
$self->{password},
join('', ($self->crypt_salt_characters)[rand(64), rand(64)])
);
}
TRUE;
lib/Apache/Auth/User/Digest.pm view on Meta::CPAN
$self->name . ':' . $self->realm
: undef;
}
sub realm {
my ($self, @value) = @_;
$self->{realm} = $value[0] if @value;
return $self->{realm};
}
sub _build_password_digest {
my ($self) = @_;
croak("Unable to build password digest from incomplete data")
if not defined($self->{realm}) or
not defined($self->{name}) or
not defined($self->{password});
my $text = join(':', $self->{name}, $self->{realm}, $self->{password});
return Digest::MD5::md5_hex($text);
}
TRUE;
lib/Apache/Auth/UserDB/File/Basic.pm view on Meta::CPAN
##############################################################################
sub _parse_entry {
my ($self, $entry) = @_;
$entry =~ /^([^:]*):([^:]*)$/
or croak('Malformed userdb entry encountered: "' . $entry . '"');
return Apache::Auth::User::Basic->new(
name => $1,
password_digest => $2
);
}
sub _build_entry {
my ($self, $user) = @_;
return join(':',
$user->name,
$user->password_digest
);
}
TRUE;
lib/Apache/Auth/UserDB/File/Digest.pm view on Meta::CPAN
sub _parse_entry {
my ($self, $entry) = @_;
$entry =~ /^([^:]*):([^:]*):([^:]*)$/
or croak('Malformed userdb entry encountered: "' . $entry . '"');
return Apache::Auth::User::Digest->new(
name => $1,
realm => $2,
password_digest => $3
);
}
sub _build_entry {
my ($self, $user) = @_;
return join(':',
$user->name,
$user->realm,
$user->password_digest
);
}
TRUE;
t/00-user-basic.t view on Meta::CPAN
TEST_USERNAME => 'Julian Mehnle',
TEST_PASSWORD => 'foobar'
};
# Create:
##############################################################################
{
my $user = Apache::Auth::User::Basic->new(
name => TEST_USERNAME,
password => TEST_PASSWORD
);
isa_ok($user, 'Apache::Auth::User::Basic', 'Created user');
is("$user", TEST_USERNAME, 'User object signature');
my $password_digest = $user->password_digest;
like($password_digest, qr/^[.\/0-9A-Za-z]{13}$/, 'Crypt algorithm is standard DES crypt');
is(crypt(TEST_PASSWORD, $password_digest), $password_digest, 'Crypt algorithm works');
}
t/01-user-digest.t view on Meta::CPAN
TEST_PW_DIGEST => 'ef4e1115f75e35811343a2207ba863a8'
};
# Create:
##############################################################################
{
my $user = Apache::Auth::User::Digest->new(
realm => TEST_REALM,
name => TEST_USERNAME,
password => TEST_PASSWORD
);
isa_ok($user, 'Apache::Auth::User::Digest', 'Created user');
is("$user", join(':', TEST_USERNAME, TEST_REALM), 'User object signature');
is($user->password_digest, TEST_PW_DIGEST, 'Digest algorithm works');
}
t/02-userdb-file-basic.t view on Meta::CPAN
##############################################################################
{
my $userdb = Apache::Auth::UserDB::File::Basic->new(
file_name => USERDB_FILE
);
isa_ok($userdb, 'Apache::Auth::UserDB::File::Basic', 'Created userdb');
my $user = Apache::Auth::User::Basic->new(
name => TEST_USERNAME,
password => TEST_PASSWORD
);
$userdb->add_user($user);
is($userdb->users, 1, '1 created user in userdb');
ok($userdb->commit(), 'Committed userdb');
}
# Open, read, and write:
##############################################################################
{
my $userdb = Apache::Auth::UserDB::File::Basic->open(
file_name => USERDB_FILE
);
isa_ok($userdb, 'Apache::Auth::UserDB::File::Basic', 'Re-opened userdb');
is($userdb->users, 1, '1 re-read user in userdb');
my $user = Apache::Auth::User::Basic->new(
name => TEST_USERNAME,
password => TEST_PASSWORD2
);
$userdb->add_user($user);
is($userdb->users, 1, '1 user in userdb after replacing 1 user');
ok($userdb->commit(), 'Committed userdb');
}
unlink(USERDB_FILE);
t/03-userdb-file-digest.t view on Meta::CPAN
{
my $userdb = Apache::Auth::UserDB::File::Digest->new(
file_name => USERDB_FILE
);
isa_ok($userdb, 'Apache::Auth::UserDB::File::Digest', 'Created userdb');
my $user = Apache::Auth::User::Digest->new(
realm => TEST_REALM,
name => TEST_USERNAME,
password => TEST_PASSWORD
);
$userdb->add_user($user);
is($userdb->users, 1, '1 created user in userdb');
ok($userdb->commit(), 'Committed userdb');
}
# Open, read, and write:
##############################################################################
t/03-userdb-file-digest.t view on Meta::CPAN
my $userdb = Apache::Auth::UserDB::File::Digest->open(
file_name => USERDB_FILE
);
isa_ok($userdb, 'Apache::Auth::UserDB::File::Digest', 'Re-opened userdb');
is($userdb->users, 1, '1 re-read user in userdb');
my $user = Apache::Auth::User::Digest->new(
realm => TEST_REALM2,
name => TEST_USERNAME,
password => TEST_PASSWORD
);
$userdb->add_user($user);
is($userdb->users, 2, '2 users in userdb after adding 1 user');
$user = Apache::Auth::User::Digest->new(
realm => TEST_REALM,
name => TEST_USERNAME,
password => TEST_PASSWORD
);
$userdb->add_user($user);
is($userdb->users, 2, '2 users in userdb after replacing 1 user');
ok($userdb->commit(), 'Committed userdb');
}
unlink(USERDB_FILE);
( run in 0.701 second using v1.01-cache-2.11-cpan-49f99fa48dc )