Skip to content
Snippets Groups Projects
Commit ff6a7512 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

do not allow multiple pending registrations for one mail

parent bee0930d
No related branches found
No related tags found
No related merge requests found
......@@ -234,6 +234,22 @@ app->attr(
qq{select id from users where name = ?});
}
);
app->attr(
get_pending_mails_query => sub {
my ($self) = @_;
return $self->app->dbh->prepare(
qq{select id from users where email = ? and status = 0;});
}
);
app->attr(
get_listed_mails_query => sub {
my ($self) = @_;
return $self->app->dbh->prepare(
qq{select * from pending_mails where email = ?;});
}
);
app->attr(
get_user_query => sub {
my ($self) = @_;
......@@ -661,6 +677,20 @@ helper 'check_if_user_name_exists' => sub {
return 0;
};
helper 'check_if_mail_is_blacklisted' => sub {
my ( $self, $mail ) = @_;
$self->app->get_pending_mails_query->execute($mail);
if ( @{ $self->app->get_pending_mails_query->fetchall_arrayref } ) {
return 1;
}
$self->app->get_listed_mails_query->execute($mail);
if ( @{ $self->app->get_listed_mails_query->fetchall_arrayref } ) {
return 1;
}
return 0;
};
helper 'get_user_travels' => sub {
my ( $self, $limit ) = @_;
......@@ -946,6 +976,11 @@ post '/register' => sub {
return;
}
if ( $self->check_if_mail_is_blacklisted($email) ) {
$self->render( 'register', invalid => 'mail_blacklisted' );
return;
}
if ( $password ne $password2 ) {
$self->render( 'register', invalid => 'password_notequal' );
return;
......@@ -958,6 +993,7 @@ post '/register' => sub {
my $token = make_token();
my $pw_hash = hash_password($password);
$self->app->dbh->begin_work;
my $user_id = $self->add_user( $user, $email, $token, $pw_hash );
my $body = "Hallo, ${user}!\n\n";
......@@ -991,9 +1027,11 @@ post '/register' => sub {
my $success = try_to_sendmail($reg_mail);
if ($success) {
$self->app->dbh->commit;
$self->render( 'login', from => 'register' );
}
else {
$self->app->dbh->rollback;
$self->render( 'register', invalid => 'sendmail' );
}
};
......
......@@ -37,7 +37,7 @@
% }
% elsif ($invalid eq 'mail_blacklisted') {
<span class="card-title">Mailadresse nicht nutzbar</span>
<p>Mit der angegebenen E-Mail-Adresse können keine
<p>Mit der angegebenen E-Mail-Adresse können derzeit keine
travelynx-Accounts registriert werden.</p>
% }
% elsif ($invalid eq 'sendmail') {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment