/usr/local/CPAN/CGI-Portal/CGI/Portal/Controls/emailpw.pm
package CGI::Portal::Controls::emailpw;
# Copyright (c) 2008 Alexander David P. All rights reserved.
#
# Generate a random passw, update and email to user
use strict;
use Digest::MD5 qw(md5_hex);
use CGI::Portal::Scripts::emailpw;
use CGI::Portal::Scripts;
use vars qw(@ISA $VERSION);
$VERSION = "0.12";
@ISA = qw(CGI::Portal::Scripts);
1;
sub launch {
my $self = shift;
# Require usr
if ($self->{'in'}{'usr'}){
# Get users email
my $r = $self->{'rdb'}->exec("select $self->{'conf'}{'user_additional'}[0],$self->{'conf'}{'user_user_field'} from $self->{'conf'}{'user_table'} where $self->{'conf'}{'user_user_field'} like " . $self->{'rdb'}->escape($self->{'in'}{'usr'}) . " limit 1")->fetch;
# Validate email
if ($r->[0] =~ /.*@.*\./){
# Generate a passw
my $pw = substr(md5_hex(rand(64)), 1, 9);
# Hash the passw
my $enc_pw = md5_hex($pw);
# Update
$self->{'rdb'}->exec("update $self->{'conf'}{'user_table'} set $self->{'conf'}{'user_passw_field'}=\'$enc_pw\' where $self->{'conf'}{'user_user_field'}=" . $self->{'rdb'}->escape($r->[1]));
# Email passw to user
mailit($r->[0],$self->{'conf'}{'admin_email'},"Logon Info ","Please use $pw to log on, and choose a new password at your convenience.");
$self->{'tmpl_vars'}{'result'} = "A temporary password has been emailed to you.";
}
elsif (! $r->[0] ){
# No email no user
$self->{'tmpl_vars'}{'result'} = "Unknown User";
}else{
$self->{'tmpl_vars'}{'result'} = "Invalid email on record, please contact us.";
}
}
# Redirect
$self->CGI::Portal::Scripts::emailpw::launch();
return;
}
# Emailing
sub mailit {
my $recipient = shift;
my $sender = shift;
my $subject = shift;
my $message = shift;
open(MAIL, "|/usr/lib/sendmail -t");
print MAIL "To: $recipient\n";
print MAIL "From: $sender\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$message";
close (MAIL);
}