sub register : Path('/user/register') {
my ($self, $c) = @_;
my (%params) = &_parseParametersIntoHash($c);
# --- if no params, assume it's executed for the first time
unless (scalar keys %params) {
my %data = ( template => 'user/register.tmpl',
title => 'Registrierung',
message => '',
username => '',
emailaddress => '',
);
while (my ($k, $v) = each %data) { $c->stash->{$k} = $v }
return;
} # unless
# --- else if mandatory parameters are submitted
my $message = "";
if( $params{username} =~ /^\s*$/ ) {
$message .= "
Bitte das Feld Benutzername ausfüllen";
} # if
if( $params{emailaddress} =~ /^\s*$/ ) {
$message .= "
Bitte das Feld E-Mai-Adresse ausfüllen";
} # if
if( $params{password} =~ /^\s*$/ or $params{passwordcheck} =~ /^\s*$/) {
$message .= "
Bitte beide Passwort-Felder ausfüllen";
} # if
unless( $params{agreeagb} ) {
$message .= "
Bitte die Bestimmungen akzeptieren";
} # if
if ($message) { # if a parameter is missing, prompt for it
my %data = ( template => 'user/register.tmpl',
title => 'Registrierung',
message => $message,
%params,
);
while (my ($k, $v) = each %data) { $c->stash->{$k} = $v }
return;
} # if
# shortcut
my $registerConf = $c->config->{register};
# --- check if params are valid
if( length $params{username} < $registerConf->{minUserNameLength} ) {
$message .= "
Der Benutzername muß mindestens "
. $registerConf->{minUserNameLength} . " Zeichen lang sein";
} # if
elsif( length $params{username} > $registerConf->{maxUserNameLength} ) {
$message .= "
Der Benutzername darf höchstens "
. $registerConf->{maxUserNameLength} . " Zeichen lang sein";
} # if
if( $params{password} ne $params{passwordcheck} ) {
$message .= "
die Passwörter sind nicht identisch";
} # if
elsif( length $params{password} < $registerConf->{minPasswordLength} ) {
$message .= "
Das Passwort muß mindestens "
. $registerConf->{minPasswordLength} . " Zeichen lang sein";
} # if
elsif( length $params{password} > $registerConf->{maxPasswordLength} ) {
$message .= "
Das Passwort darf höchstens "
. $registerConf->{maxPasswordLength} . " Zeichen lang sein";
} # if
unless( Mail::RFC822::Address::valid( $params{emailaddress} ) ) {
$message .= "
E-Mail '$params{emailaddress}' ungültig";
} # unless
# check db if username is free
# send mail
if ($message) { # if a parameter is invalid, prompt for it
my %data = ( template => 'user/register.tmpl',
title => 'Registrierung',
message => $message,
%params,
);
while (my ($k, $v) = each %data) { $c->stash->{$k} = $v }
return;
} # if
# else redirect to register_finished
my %data = ( template => 'user/register_finished.tmpl',
title => 'Registrierung',
message => '',
%params,
);
while (my ($k, $v) = each %data) { $c->stash->{$k} = $v }
} # register