http://qs1969.pair.com?node_id=143311
Category: Web Stuff
Author/Contact Info /msg cjf
Description: Uses Apache::Htpasswd to add, delete, or change the password of a user in a .htaccess file. User input is web-based using forms, includes an authorization check.
#!/usr/bin/perl -wT

use strict;
use CGI;
use Apache::Htpasswd;

my $q  = new CGI;
my $ht = new Apache::Htpasswd("/home/cjf/httpd/.htaccess");

my $username   = $q->param("username");
my $passwd     = $q->param("password");

my $action     = $q->param("action");
my $user       = $q->param("user");
my $new_passwd = $q->param("new_passwd");
my $old_passwd = $q->param("old_passwd");

if ($new_passwd eq '') {
    error("You didn't enter a password");
    exit;
}

my $valid_user = "cjf";
my $valid_passwd = "J10A1P16H8";

if (($username eq $valid_user) && ($passwd eq $valid_passwd)) {

    if ($action eq "add") {
        $ht->htpasswd($user, $new_passwd);
    } elsif ($action eq "change_passwd") {
        $ht->htpasswd($user, $new_passwd, $old_passwd);
    } elsif ($action eq "delete_user") {
        $ht->htDelete($user);
    } else {
        error("No action was submitted.");
    }

} else {
    error("Login Incorrect.");
}

sub error {
    my $error = shift;
    print $q->header("text/html"),
          $q->start_html("Error"),
      $q->h1("Error"),
      $q->p("$error"),
      $q->end_html;
}