initial commit of file from CVS for smeserver-userpanels on Sat Sep 7 21:13:20 AEST 2024
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
#----------------------------------------------------------------------
|
||||
# userpanalForwarding
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
package esmith::FormMagick::Panel::userpanelForwarding;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use esmith::AccountsDB;
|
||||
use esmith::FormMagick;
|
||||
|
||||
our @ISA = qw(esmith::FormMagick Exporter);
|
||||
our $VERSION = sprintf '%d.%03d', q$Revision: 1.0 $ =~ /: (\d+).(\d+)/;
|
||||
our @EXPORT = qw();
|
||||
|
||||
our $db = esmith::AccountsDB->open() or die "Couldn't open AccountsDB\n";;
|
||||
|
||||
#get user and untaint
|
||||
our $UserName = $ENV{'REMOTE_USER'};
|
||||
$UserName = $1 if ($UserName =~ /^([a-z][\-a-z0-9]*)$/);
|
||||
|
||||
sub get_EmailForward
|
||||
{
|
||||
return $db->get_prop($UserName, "EmailForward");
|
||||
}
|
||||
|
||||
sub get_ForwardAddress
|
||||
{
|
||||
return $db->get_prop($UserName, "ForwardAddress");
|
||||
}
|
||||
|
||||
sub validate_email
|
||||
{
|
||||
my $fm = shift;
|
||||
my $q = $fm->{cgi};
|
||||
|
||||
my $Forward = $q->param('EmailForward');
|
||||
my $ForwardAddress = $q->param('ForwardAddress') || '';
|
||||
$ForwardAddress =~ s/^\s+|\s+$//g;
|
||||
|
||||
my $response = $fm->email_simple($ForwardAddress);
|
||||
if ($response eq 'OK')
|
||||
{
|
||||
return 'OK';
|
||||
}
|
||||
elsif ($ForwardAddress eq '')
|
||||
{
|
||||
return 'OK' if ($Forward eq 'local');
|
||||
return 'VALID_EMAIL_NEEDED';
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'UNACCEPTABLE_CHARS';
|
||||
}
|
||||
}
|
||||
|
||||
sub change_settings
|
||||
{
|
||||
my $fm = shift;
|
||||
my $q = $fm->{cgi};
|
||||
|
||||
$db->set_prop($UserName, 'EmailForward', $q->param("EmailForward"));
|
||||
$db->set_prop($UserName, 'ForwardAddress', $q->param("ForwardAddress"));
|
||||
|
||||
unless ( system('/sbin/e-smith/signal-event', "email-update-quick", $UserName ) == 0 )
|
||||
{
|
||||
$fm->error('ERROR_UPDATING');
|
||||
return undef;
|
||||
}
|
||||
|
||||
$fm->success('SUCCESS');
|
||||
}
|
||||
|
||||
1;
|
@@ -0,0 +1,108 @@
|
||||
#----------------------------------------------------------------------
|
||||
# userpanelPassword
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
package esmith::FormMagick::Panel::userpanelPassword;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use esmith::util;
|
||||
use esmith::AccountsDB;
|
||||
use esmith::ConfigDB;
|
||||
use esmith::FormMagick;
|
||||
|
||||
our $accountdb = esmith::AccountsDB->open();
|
||||
our $configdb = esmith::ConfigDB->open();
|
||||
|
||||
our @ISA = qw(esmith::FormMagick Exporter);
|
||||
our $VERSION = sprintf '%d.%03d', q$Revision: 1.0 $ =~ /: (\d+).(\d+)/;
|
||||
our @EXPORT = qw();
|
||||
|
||||
sub check_password {
|
||||
my $fm = shift;
|
||||
my $pass1 = shift;
|
||||
|
||||
my $check_type;
|
||||
my $rec = $configdb->get('passwordstrength');
|
||||
$check_type = ($rec ? ($rec->prop('Users') || 'none') : 'none');
|
||||
|
||||
return $fm->validate_password($check_type,$pass1);
|
||||
}
|
||||
|
||||
sub password_compare {
|
||||
my $fm = shift;
|
||||
my $pass2 = shift;
|
||||
|
||||
my $pass1 = $fm->{cgi}->param('pass');
|
||||
unless ($pass1 eq $pass2)
|
||||
{
|
||||
$fm->error('PASSWORD_NO_MATCH');
|
||||
return undef;
|
||||
}
|
||||
return "OK";
|
||||
}
|
||||
|
||||
sub change_password {
|
||||
|
||||
my ($fm) = @_;
|
||||
my $q = $fm->{cgi};
|
||||
|
||||
#get user and untaint
|
||||
my $UserName = $ENV{'REMOTE_USER'} ||'';
|
||||
unless (($UserName) = ($UserName =~ /^([a-z][\-\_\.a-z0-9]*)$/ ))
|
||||
{
|
||||
$fm->error('YOUR_ACCOUNT_INVALID_CHARS');
|
||||
return undef;
|
||||
}
|
||||
|
||||
my $oldPass = $q->param('oldPass');
|
||||
my $pass = $q->param('pass');
|
||||
|
||||
unless (($oldPass) = ($oldPass =~ /^(\S+)$/ ))
|
||||
{
|
||||
$fm->error('PASSWORD_OLD_INVALID_CHARS');
|
||||
return undef;
|
||||
}
|
||||
|
||||
unless (($pass) = ($pass =~ /^([ -~]+)$/ ))
|
||||
{
|
||||
$fm->error('PASSWORD_INVALID_CHARS');
|
||||
return undef;
|
||||
}
|
||||
|
||||
my $acct;
|
||||
unless ($acct = $accountdb->get($UserName))
|
||||
{
|
||||
$fm->error('YOUR_ACCOUNT_INVALID');
|
||||
return undef;
|
||||
}
|
||||
|
||||
unless ($acct->prop('type') eq 'user')
|
||||
{
|
||||
$fm->error('YOUR_ACCOUNT_INVALID');
|
||||
return undef;
|
||||
}
|
||||
|
||||
unless (esmith::util::setUserPasswordRequirePrevious(
|
||||
$UserName,
|
||||
$oldPass,
|
||||
$pass))
|
||||
{
|
||||
$fm->error('ERROR_PASSWORD_CHANGE');
|
||||
return undef;
|
||||
}
|
||||
|
||||
$accountdb->set_prop($UserName, "PasswordSet", "yes");
|
||||
undef $accountdb;
|
||||
|
||||
unless ( system("/sbin/e-smith/signal-event", "password-modify", $UserName ) == 0 )
|
||||
{
|
||||
$fm->error('ERROR_UPDATING');
|
||||
return undef;
|
||||
}
|
||||
|
||||
$fm->success('PASSWORD_CHANGE_SUCCESS', 'Done');
|
||||
}
|
||||
|
||||
|
||||
1;
|
Reference in New Issue
Block a user