NAME Authen::Htpasswd - interface to read and modify Apache .htpasswd files SYNOPSIS my $pwfile = Authen::Htpasswd->new('user.txt', { encrypt_hash => 'md5' }); # authenticate a user (checks all hash methods by default) if ($pwfile->check_user_password('bob', 'foo')) { ... } # modify the file (writes immediately) $pwfile->update_user('bob', $password, $info); $pwfile->add_user('jim', $password); $pwfile->delete_user('jim'); # get user objects tied to a file my $user = $pwfile->lookup_user('bob'); if ($user->check_password('vroom', [qw/ md5 sha1 /])) { ... } # only use secure hashes $user->password('foo'); # writes to file $user->set(password => 'bar', extra_info => 'editor'); # change more than one thing at once # or manage the file yourself my $user = Authen::Htpasswd::User->new('bill', { hashed_password => 'iQ.IuWbUIhlPE' }); my $user = Authen::Htpasswd::User->new('bill', 'bar', 'staff', { encrypt_hash => 'crypt' }); print PASSWD $user->to_line, "\n"; DESCRIPTION This module provides a convenient, object-oriented interface to Apache-style ".htpasswd" files. It supports passwords encrypted via MD5, SHA1, and crypt, as well as plain (cleartext) passwords. It requires Crypt::PasswdMD5 for MD5 and Digest::SHA1 for SHA1. The third field of the file is also supported, referred to here as "extra_info". METHODS new my $pwfile = Authen::Htpasswd->new($filename, \%options); Creates an object for a given ".htpasswd" file. Options: encrypt_hash How passwords should be encrypted if a user is added or changed. Valid values are "md5", "sha1", "crypt", and "plain". Default is "crypt". check_hashes An array of hash methods to try when checking a password. The methods will be tried in the order given. Default is "md5", "sha1", "crypt", "plain". lookup_user my $userobj = $pwfile->lookup_user($username); Returns an Authen::Htpasswd::User object for the given user in the password file. check_user_password $pwfile->check_user_password($username,$password); Returns whether the password is valid. Shortcut for "$pwfile->lookup_user->($username)->check_password($password)". update_user $pwfile->update_user($userobj, \%options); $pwfile->update_user($username, $password[, $extra_info], \%options); Modifies the entry for a user saves it to the file. If the user entry does not exist, it is created. Options are the same as for Authen::Htpasswd::User. add_user $pwfile->add_user($userobj, \%options); $pwfile->add_user($username, $password[, $extra_info], \%options); Adds a user entry to the file. If the user entry already exists, an exception is raised. Options are the same as for Authen::Htpasswd::User. delete_user $pwfile->delete_user($userobj); $pwfile->delete_user($username); Removes a user entry from the file. AUTHOR David Kamholz davekam at pobox dot com SEE ALSO Apache::Htpasswd.