diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2021-08-20 22:52:02 +0200 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2021-08-20 22:52:02 +0200 | 
| commit | 39ab6e57d391fd9e6b6cd7b8e81b4140d8864a37 (patch) | |
| tree | 37a993246e7edb8ed9c21f1436f0d39604082aa9 | |
| parent | 64e20b50cf3547bf0fa0bbd6823532142bd11763 (diff) | |
allow registration to be denied for certain IPs, e.g. known spammers
(yes, there are actually spambots flooding people with unsolicited
registration e-mails)
| -rw-r--r-- | lib/Travelynx/Controller/Account.pm | 16 | ||||
| -rw-r--r-- | templates/_invalid_input.html.ep | 4 | 
2 files changed, 20 insertions, 0 deletions
| diff --git a/lib/Travelynx/Controller/Account.pm b/lib/Travelynx/Controller/Account.pm index db02dd1..12a059a 100644 --- a/lib/Travelynx/Controller/Account.pm +++ b/lib/Travelynx/Controller/Account.pm @@ -85,6 +85,22 @@ sub register {  		return;  	} +	if ( my $registration_denylist +		= $self->app->config->{registration}->{denylist} ) +	{ +		open( my $fh, "<", $registration_denylist ) +		  or die("cannot open($registration_denylist)"); +		while ( my $line = <$fh> ) { +			chomp $line; +			if ( $ip eq $line ) { +				close($fh); +				$self->render( 'register', invalid => "denylist" ); +				return; +			} +		} +		close($fh); +	} +  	if ( my $error = $self->users->is_name_invalid( name => $user ) ) {  		$self->render( 'register', invalid => $error );  		return; diff --git a/templates/_invalid_input.html.ep b/templates/_invalid_input.html.ep index 4cebf29..6b0fb65 100644 --- a/templates/_invalid_input.html.ep +++ b/templates/_invalid_input.html.ep @@ -78,6 +78,10 @@  					<p>Aus Sicherheitsgründen kann der Account nur nach Passworteingabe  					gelöscht werden.</p>  				% } +				% elsif ($invalid eq 'denylist') { +					<span class="card-title">Registrierung deaktiviert</span> +					<p>Für diesen Zugang ist derzeit keine Registrierung möglich.</p> +				% }  				% else {  					<span class="card-title">Fehler</span>  					<p><%= $invalid %></p> | 
