Apache-AuthenMT
view release on metacpan or search on metacpan
AuthenMT.pm view on Meta::CPAN
package Apache::AuthenMT;
$VERSION = "1.00";
use strict;
use Apache::Constants qw(:common);
use MT::App;
use MT::Author;
# authentication handler
sub handler {
my $r = shift;
my $MT_DIR = $r->dir_config("MT_DIR");
my $reason;
# get user's authentication credentials
my($res, $sent_pw) = $r->get_basic_auth_pw;
return $res if $res != OK;
my $user = $r->connection->user;
# start up Movable Type
my $app = MT::App->new(
Config => $MT_DIR . 'mt.cfg',
Directory => $MT_DIR
) or $reason = MT::App::->errstr;
# check password
$reason = authenticate($r, $user, $sent_pw) unless ($reason);
# reason for failure
if ($reason) {
#$r->note_basic_auth_failure;
#$r->log_reason($reason, $r->filename);
return AUTH_REQUIRED;
}
# authenticated
return OK;
}
# check user and password against Movable Type's database
sub authenticate {
my $r = shift;
my $user = shift;
my $sent_pw = shift;
my $crypted = 0;
# print STDERR "authmt: $user $sent_pw\n";
if (my $author = MT::Author->load({ name => $user })) {
if ($author->is_valid_password($sent_pw, $crypted)) {
return "";
} else {
return "invalid pass";
}
} else {
return "invalid user";
}
}
=head1 NAME
Apache::AuthenMT - Authenticate using Movable Type's database
=head1 SYNOPSIS
Example 1: F<.htaccess>:
<%Perl>
use lib '/www/htdocs/apps/mt/lib';
use lib '/www/htdocs/apps/mt/extlib';
</%Perl>
PerlModule Apache::AuthenMT
AuthName MindsIsland
AuthType Basic
PerlSetVar MT_DIR /www/htdocs/apps/mt/
PerlAuthenHandler Apache::AuthenMT
( run in 0.457 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )