diff options
author | Buchan Milne <buchan@mageia.org> | 2010-10-26 14:51:48 +0000 |
---|---|---|
committer | Buchan Milne <buchan@mageia.org> | 2010-10-26 14:51:48 +0000 |
commit | 601b41083cf7c2186ecce70ec07aebdb9310edd6 (patch) | |
tree | 23d14b17ec560316d94f0d840f47a4ae48e9d7b3 /lib/CatDap/Controller/register.pm | |
parent | 195308dcc10a015aaae5fd1f1bd0be817c2127bd (diff) | |
download | identity-601b41083cf7c2186ecce70ec07aebdb9310edd6.tar identity-601b41083cf7c2186ecce70ec07aebdb9310edd6.tar.gz identity-601b41083cf7c2186ecce70ec07aebdb9310edd6.tar.bz2 identity-601b41083cf7c2186ecce70ec07aebdb9310edd6.tar.xz identity-601b41083cf7c2186ecce70ec07aebdb9310edd6.zip |
Clean up repo
Diffstat (limited to 'lib/CatDap/Controller/register.pm')
-rw-r--r-- | lib/CatDap/Controller/register.pm | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/lib/CatDap/Controller/register.pm b/lib/CatDap/Controller/register.pm new file mode 100644 index 0000000..d8fc7c1 --- /dev/null +++ b/lib/CatDap/Controller/register.pm @@ -0,0 +1,150 @@ +package CatDap::Controller::register; +use Moose; +use namespace::autoclean; +use Data::Dumper; +use Email::Valid; +use Data::UUID; + +BEGIN {extends 'Catalyst::Controller'; } + +=head1 NAME + +CatDap::Controller::register - Catalyst Controller + +=head1 DESCRIPTION + +Catalyst Controller. + +=head1 METHODS + +=cut + + +=head2 index + +=cut + +sub index :Path :Args(0) : Form { + my ( $self, $c ) = @_; + + #my $form = Catalyst::Controller::HTML::FormFu->form(); + #$c->response->body('Matched CatDap::Controller::register in register.'); +} + +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 @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'); + } + my $email = $c->request->params->{mail1}; + if (! Email::Valid->address($email)) { + push @errors, $c->loc('Invalid email address'); + } + if ($email ne $c->request->params->{mail2}) { + 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->{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 (@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'); + #} + } + } +} + +sub captcha : Local { + my ($self, $c) = @_; + return $c->create_captcha(); +} + + + +=head1 AUTHOR + +Buchan Milne + +=head1 LICENSE + +This library is free software. You can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut + +__PACKAGE__->meta->make_immutable; + +1; |