The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Authen::Htpasswd::User - represents a user line in a .htpasswd file

SYNOPSIS

   my $user = Authen::Htpasswd::User->new($username, $password[, $extra_info], \%options);
   my $user = $pwfile->lookup_user($username); # from Authen::Htpasswd object
   
   if ($user->check_password($password)) { ... }
   if ($user->hashed_password eq $foo) { ... }
   
   # these are written immediately if the user was looked up from an Authen::Htpasswd object
   $user->username('bill');
   $user->password('bar');
   $user->hashed_password('tIYAwma5mxexA');
   $user->extra_info('root');
   $user->set(username => 'bill', password => 'foo'); # set several at once
   
   print $user->to_line, "\n";

METHODS

new

my $userobj = Authen::Htpasswd::User->new($username, $password[, $extra_info], \%options);

Creates a user object. You may also specify the arguments and options together in a hash: { username => $foo, password => $bar, extra_info => $baz, ... }.

encrypt_hash
check_hashes

See Authen::Htpasswd.

hashed_password

Explicitly sets the value of the hashed password, rather than generating it with password.

check_password

$userobj->check_password($password,\@check_hashes);

Returns whether the password matches. check_hashes is the same as for Authen::Htpasswd.

username

hashed_password

extra_info

These methods get and set the three fields of the user line. If the user was looked up from an Authen::Htpasswd object, the changes are written immediately to the assciated file. The same goes for password and set below.

password

$userobj->password($newpass);

Encrypts a new password.

set

$userobj->set(item => $value, ...);

Sets any of the four preceding values at once. Only writes the file once if it is going to be written.

to_line

$userobj->to_line;

Returns a line for the user, suitable for printing to a .htpasswd file. There is no newline at the end.

AUTHOR

David Kamholz

davekam at pobox dot com