Apache-Htpasswd-Perishable
view release on metacpan or search on metacpan
Perishable.pm view on Meta::CPAN
# Preloaded methods go here.
sub new {
my $class = shift;
my $file = shift;
my $self = bless {}, $class;
system("touch $file") unless -f $file;
unless(-f $file){
$self->{'ERROR'} = __PACKAGE__. "::new Cannot create $file: $!";
croak $self->error();
}
#i hope he cleans this up.
$self->{'PASSWD'} = $file;
$self->{'ERROR'} = "";
$self->{'LOCK'} = 0;
$self->{'OPEN'} = 0;
return $self;
}
sub extend {
my ($self,$login,$days) = @_;
die "provide a login" unless $login;
die "provide a login" unless $days;
$self->fetchInfo($login);
my $current = Date::Simple->new($self->fetchInfo($login));
die "Invalid date already exists. Cannot extend: $!" unless $current;
my $extended = $current + $days;
$self->writeInfo($login,$extended) or die "couldn't set expiration date: ".$self->error;
return 1;
}
sub expire {
my ($self,$login,$days) = @_;
die "provide a login" unless $login;
unless(defined $days){
my $expires = $self->fetchInfo($login);
my $today = today();
return $expires - $today;
}
my $date = today();
my $expire = $date + $days;
$self->writeInfo($login,$expire) or die "couldn't set expiration date: ".$self->error;
return 1;
}
# Autoload methods go after =cut, and are processed by the autosplit program.
1;
__END__
# Below is stub documentation for your module. You better edit it!
=head1 NAME
Apache::Htpasswd::Perishable - Perl extension for expiring htaccess entries
=head1 SYNOPSIS
use Apache::Htpasswd::Perishable;
=head1 DESCRIPTION
This module allows you to define and extend an expiration date that is put into the
extra-info field of an .htpasswd entry like:
username:encrypted-password:extra-info
=head2 METHODS
This module inherits all methods from Apache::Htpasswd, and also adds:
expire() - expire($username,$days_from_today). (over)writes the extra-info field
of an .htpasswd entry. Calling expire($username) returns the number of days
until expiration.
extend() - extend($username,$days_from_expiration). extends the expiration date
in the extra-info field of a .htpasswd entry by $days_from_expiration days.
=head1 AUTHOR
Allen Day <allenday@ucla.edu>
=head1 SEE ALSO
L<perl>. L<Apache::Htpasswd>. L<Date::Simple>.
=cut
( run in 1.031 second using v1.01-cache-2.11-cpan-437f7b0c052 )