1 package App::EzPz::UserStore;
3 use Module::Runtime qw(use_module);
4 use Scalar::Util 'blessed';
7 has ezmlm_bindir => (is => 'ro', required => 1);
9 has htpasswd_file => (is => 'ro', required => 1);
11 has _htpasswd => (is => 'lazy');
13 sub _build__htpasswd {
15 return use_module('Authen::Htpasswd')->new($self->htpasswd_file);
20 return map $self->_inflate_user($_), $self->_htpasswd->all_users;
24 my ($self, $name) = @_;
25 if (my $htp_user = $self->_htpasswd->lookup_user($name)) {
26 return $self->_inflate_user($htp_user);
33 my ($self, $user) = @_;
34 unless (blessed($user)) {
35 $user = use_module('App::EzPz::User')->new($user);
37 my $htp_file = $self->_htpasswd;
38 my $htp_user = $user->_htpasswd_user;
39 $htp_file->add_user($htp_user);
40 $htp_user->file($htp_file);
41 $user->_set_ezmlm_bindir($self->ezmlm_bindir);
46 my ($self, $user) = @_;
47 $self->_htpasswd->remove_user($user->_htpasswd_user);
52 my ($self, $htp_user) = @_;
53 return use_module('App::EzPz::User')->new(
54 htpasswd_user => $htp_user,
55 ezmlm_bindir => $self->ezmlm_bindir,
60 my ($self, $name, $password) = @_;
61 return unless my $user = $self->get($name);
62 return $user->check_password($password);