aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CatDap/Controller/register.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CatDap/Controller/register.pm')
-rw-r--r--lib/CatDap/Controller/register.pm164
1 files changed, 89 insertions, 75 deletions
diff --git a/lib/CatDap/Controller/register.pm b/lib/CatDap/Controller/register.pm
index d8fc7c1..24ceb53 100644
--- a/lib/CatDap/Controller/register.pm
+++ b/lib/CatDap/Controller/register.pm
@@ -1,7 +1,6 @@
package CatDap::Controller::register;
use Moose;
use namespace::autoclean;
-use Data::Dumper;
use Email::Valid;
use Data::UUID;
@@ -35,96 +34,111 @@ sub check : Local {
my ( $self, $c ) = @_;
my %details = %{$c->request->params};
- my $username = $c->request->params->{uid};
- $username =~ s/[A-Z]/[a-z]/g;
+ my $username = lc($c->request->params->{uid});
my @errors;
$c->stash(errors => []);
# Check username, start with letter, followed by letters or numbers
- if ($username !~ /^[a-z][a-z0-9_\-]*$/) {
- push @errors, $c->loc('Invalid username');
+ if ($username !~ /^[a-z][a-z0-9_-]*$/) {
+ push @errors, $c->loc('Invalid username');
}
my $email = $c->request->params->{mail1};
if (! Email::Valid->address($email)) {
- push @errors, $c->loc('Invalid email address');
+ push @errors, $c->loc('Invalid email address');
}
if ($email ne $c->request->params->{mail2}) {
- push @errors, $c->loc('Addresses do not match');
+ push @errors, $c->loc('Addresses do not match');
}
if (! $c->validate_captcha($c->req->param('validate'))){
push @errors, $c->loc('Incorrect validation text, please try again');
}
- if ($c->request->params->{gn} !~ /^\p{IsAlnum}*\z$/) {
- push @errors, $c->loc('The first name supplied contains illegal characters');
+ if ($c->request->params->{gn} !~ /^\p{IsAlnum}+$/) {
+ push @errors, $c->loc(
+ 'The first name supplied contains illegal characters'
+ );
}
- if ($c->request->params->{sn} !~ /^\p{IsAlnum}*\z$/) {
- #push @errors, $c->loc('The') . ' ' $c->loc('surname') . ' ' . $c->loc('supplied contains unprintable characters');
- push @errors, $c->loc('The surname supplied contains illegal characters');
+ if ($c->request->params->{sn} !~ /^\p{IsAlnum}+$/) {
+ push @errors, $c->loc(
+ 'The surname supplied contains illegal characters'
+ );
}
- if (@errors gt 0) {
- $c->stash(errors => \@errors);
- $c->stash(template => 'register/index.tt');
- } else {
- # check in LDAP now that we have validated username and email
- my $mesg = $c->model('Proxy')->search("(mail=$email)");
- if ($mesg->entries ne 0) {
- push @errors,$c->loc('An account already exists with this email address');
- }
- $mesg = $c->model('Proxy')->search("(uid=$username)");
- if ($mesg->entries ne 0) {
- my $foo = Dumper(${$c->config}{'Model::Proxy'}{'base'});
- push @errors,$c->loc('An account already exists with this username');
- #push @errors,"under base" . __PACKAGE__->config{Model::Proxy}{base};
- push @errors,$foo;
- }
- if (@errors gt 0) {
- $c->stash(errors => \@errors);
- $c->stash(template => 'register/index.tt');
- } else {
- my $dn = "uid=$username,${$c->config}{'Model::Proxy'}{'base'}";
- my $ug = Data::UUID->new;
- my $password = $ug->create_str();
- my $cn = $c->request->params->{gn} . " " . $c->request->params->{sn};
- $mesg = $c->model('Proxy')->add($dn,
- attr => [
- objectclass => [ 'inetOrgPerson' ],
- sn => $c->request->params->{sn},
- gn => $c->request->params->{gn},
- cn => $cn,
- mail => $email,
- pwdReset => 'TRUE',
- userPassword => $password,
- ]
- );
- if ($mesg) {
- push @errors,$mesg->error;
- $c->stash(errors => \@errors);
- #$c->stash(template => 'register/index.tt');
- }
- #} else {
- my $body;
- $body .= $c->loc('Dear') . " $c->request->params->{gn},\n";
- $body .= $c->loc("Your Mageia indentity has been successfully created, but requires activation.\n");
- $body .= $c->loc("To activate your account, please follow the link below.\n");
- $body .= $c->uri_for('/user/firstlogin') . "?username=$username&key=$password";
- $c->stash->{email} = {
- to => $email,
- from => 'no-reply@mageia.org',
- subject => $c->loc('Mageia Identity Activation'),
- body => $body,
- };
-
- $c->forward( $c->view('Email') );
- if ( scalar( @{ $c->error } ) ) {
- my $errors = join "\n",@{ $c->error };
- $c->response->body($c->loc('An error occured sending the email, but your account was created. Please try the password recovery process f you entered the correct email address: [_1]', $errors));
- $c->error(0); # Reset the error condition if you need to
- }
- $c->stash(template => 'register/complete.tt');
- $c->stash(message => 'Check your email');
- #}
- }
+ if (@errors) {
+ $c->stash(errors => \@errors);
+ $c->stash(template => 'register/index.tt');
+ return;
}
+
+ # check in LDAP now that we have validated username and email
+ my $mesg = $c->model('Proxy')->search("(mail=$email)");
+ if ($mesg->entries()) {
+ push @errors,$c->loc(
+ 'An account already exists with this email address'
+ );
+ }
+ $mesg = $c->model('Proxy')->search("(uid=$username)");
+ if ($mesg->entries()) {
+ push @errors,$c->loc('An account already exists with this username');
+ push @errors;
+ }
+
+ if (@errors) {
+ $c->stash(errors => \@errors);
+ $c->stash(template => 'register/index.tt');
+ return;
+ }
+
+ my $dn = "uid=$username,${$c->config}{'Model::Proxy'}{'base'}";
+ my $ug = Data::UUID->new;
+ my $password = $ug->create_str();
+ my $cn = $c->request->params->{gn} . " " . $c->request->params->{sn};
+ $mesg = $c->model('Proxy')->add($dn,
+ attr => [
+ objectclass => [ 'inetOrgPerson' ],
+ sn => $c->request->params->{sn},
+ gn => $c->request->params->{gn},
+ cn => $cn,
+ mail => $email,
+ pwdReset => 'TRUE',
+ userPassword => $password,
+ ]
+ );
+ if ($mesg) {
+ push @errors,$mesg->error;
+ $c->stash(errors => \@errors);
+ #$c->stash(template => 'register/index.tt');
+ }
+
+ my $text = <<EOF;
+Dear %s,
+Your Mageia indentity has been successfully created, but requires activation.
+To activate your account, please follow the link below.
+%s?username=%s&key=%s
+EOF
+ my $body = $c->loc(
+ sprintf(
+ $text,
+ $c->request->params->{gn},
+ $c->uri_for('/user/firstlogin'),
+ $username,
+ $password
+ )
+ );
+ $c->stash->{email} = {
+ to => $email,
+ from => 'no-reply@mageia.org',
+ subject => $c->loc('Mageia Identity Activation'),
+ body => $body,
+ };
+
+ $c->forward( $c->view('Email') );
+ if ( @{ $c->error } ) {
+ my $errors = join "\n",@{ $c->error };
+ $c->response->body($c->loc('An error occured sending the email, but your account was created. Please try the password recovery process f you entered the correct email address: [_1]', $errors));
+ $c->error(0); # Reset the error condition if you need to
+ }
+
+ $c->stash(template => 'register/complete.tt');
+ $c->stash(message => 'Check your email');
}
sub captcha : Local {