registration: more error handling
This commit is contained in:
parent
32f3334b5c
commit
8d353fcf9d
2 changed files with 77 additions and 13 deletions
37
index.pl
37
index.pl
|
@ -6,7 +6,7 @@ use Cache::File;
|
|||
use DateTime;
|
||||
use DBI;
|
||||
use Encode qw(decode encode);
|
||||
use Email::Sender::Simple qw(sendmail);
|
||||
use Email::Sender::Simple qw(try_to_sendmail);
|
||||
use Email::Simple;
|
||||
use Geo::Distance;
|
||||
use List::Util qw(first);
|
||||
|
@ -504,11 +504,26 @@ helper 'get_user_id' => sub {
|
|||
$user_name //= $self->get_user_name;
|
||||
|
||||
if ( not -e $dbname ) {
|
||||
$self->app->dbh->begin_work;
|
||||
$self->app->dbh->do(
|
||||
qq{
|
||||
create table schema_version (
|
||||
version integer primary key
|
||||
);
|
||||
}
|
||||
);
|
||||
$self->app->dbh->do(
|
||||
qq{
|
||||
create table users (
|
||||
id integer primary key,
|
||||
name char(64) not null unique
|
||||
name char(64) not null unique,
|
||||
status int not null,
|
||||
is_public bool not null,
|
||||
email char(256),
|
||||
password text,
|
||||
registered_at datetime not null,
|
||||
last_login datetime not null,
|
||||
deletion_requested datetime
|
||||
)
|
||||
}
|
||||
);
|
||||
|
@ -540,6 +555,12 @@ helper 'get_user_id' => sub {
|
|||
)
|
||||
}
|
||||
);
|
||||
$self->app->dbh->do(
|
||||
qq{
|
||||
insert into schema_version (version) values (1);
|
||||
}
|
||||
);
|
||||
$self->app->dbh->commit;
|
||||
}
|
||||
|
||||
$self->app->get_userid_query->execute($user_name);
|
||||
|
@ -987,6 +1008,11 @@ post '/x/register' => sub {
|
|||
return;
|
||||
}
|
||||
|
||||
if ( not length($email) ) {
|
||||
$self->render( 'register', invalid => 'mail_empty' );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( $user !~ m{ ^ [0-9a-zA-Z_-]+ $ }x ) {
|
||||
$self->render( 'register', invalid => 'user_format' );
|
||||
return;
|
||||
|
@ -1038,8 +1064,13 @@ post '/x/register' => sub {
|
|||
);
|
||||
|
||||
# TODO re-enable once remaining registration code is complete
|
||||
#sendmail($reg_mail);
|
||||
#my $success = try_to_sendmail($reg_mail);
|
||||
#if ($success) {
|
||||
# $self->render( 'login', from => 'register' );
|
||||
#}
|
||||
#else {
|
||||
# $self->render( 'register', invalid => 'sendmail' );
|
||||
#}
|
||||
|
||||
$self->render( 'register', invalid => 'not implemented yet' );
|
||||
};
|
||||
|
|
|
@ -10,9 +10,40 @@
|
|||
href="https://de.wikipedia.org/wiki/Cross-Site-Request-Forgery">CSRF</a>
|
||||
handeln.</p>
|
||||
% }
|
||||
% elsif ($invalid eq 'credentials') {
|
||||
<span class="card-title">Ungültige Logindaten</span>
|
||||
<p>Falscher Account oder falsches Passwort.</p>
|
||||
% elsif ($invalid eq 'user_empty') {
|
||||
<span class="card-title">Leerer Nutzername</span>
|
||||
<p>Bitte gib einen Nutzernamen an.</p>
|
||||
% }
|
||||
% elsif ($invalid eq 'mail_empty') {
|
||||
<span class="card-title">Leere Mail-Adresse</span>
|
||||
<p>Bitte gib eine E-Mail-Adresse an.</p>
|
||||
% }
|
||||
% elsif ($invalid eq 'user_format') {
|
||||
<span class="card-title">Ungültiger Nutzername</span>
|
||||
<p>Für den Nutzernamen erlaubte Zeichen sind
|
||||
0-9, a-z, A-Z sowie Unterstrich (_) und Bindestrich (-).</p>
|
||||
% }
|
||||
% elsif ($invalid eq 'user_collision') {
|
||||
<span class="card-title">Name bereits vergeben</span>
|
||||
<p>Es gibt bereits einen Account unter diesem Namen.</p>
|
||||
% }
|
||||
% elsif ($invalid eq 'password_notequal') {
|
||||
<span class="card-title">Passwort ungültig</span>
|
||||
<p>Die angegebenen Passwörter sind nicht identisch.</p>
|
||||
% }
|
||||
% elsif ($invalid eq 'password_short') {
|
||||
<span class="card-title">Passwort zu kurz</span>
|
||||
<p>Das Passwort muss mindestens acht Zeichen lang sein.</p>
|
||||
% }
|
||||
% elsif ($invalid eq 'mail_blacklisted') {
|
||||
<span class="card-title">Mailadresse nicht nutzbar</span>
|
||||
<p>Mit der angegebenen E-Mail-Adresse können keine
|
||||
travelynx-Accounts registriert werden.</p>
|
||||
% }
|
||||
% elsif ($invalid eq 'sendmail') {
|
||||
<span class="card-title">Mailversand fehlgeschlagen</span>
|
||||
<p>Die Bestätigungsmail konnte nicht verschickt werden.
|
||||
Überprüfe bitte, ob die Adresse gültig ist.</p>
|
||||
% }
|
||||
% else {
|
||||
<span class="card-title">Unbekannter Fehler</span>
|
||||
|
@ -67,14 +98,16 @@
|
|||
<p>
|
||||
Die Mail-Adresse wird ausschließlich zur Bestätigung der Anmeldung
|
||||
und für die "Passwort vergessen"-Funktionalität verwendet und nicht
|
||||
an Dritte weitergegeben. Weitere erhobene Daten sowie deren Zweck
|
||||
und Speicherfristen werden in der <a
|
||||
href="/x/impressum">Datenschutzerklärung</a> beschrieben.
|
||||
an Dritte weitergegeben. Die <a
|
||||
href="/x/impressum">Datenschutzerklärung</a> beschreibt weitere
|
||||
erhobene Daten sowie deren Zweck und Speicherfristen.
|
||||
Accounts werden nach einem Jahr ohne Nutzung automatisch gelöscht.
|
||||
</p>
|
||||
<p>
|
||||
Für jeden Account wird das Datum der letzten Anmeldung gespeichert.
|
||||
Accounts, die mehr als ein Jahr (12 Monate) nicht genutzt wurden,
|
||||
werden automatisch und unwiderruflich gelöscht.
|
||||
Bitte beachten: Travelynx ist ein privat betriebenes Projekt ohne
|
||||
Verfügbarkeitsgarantie. Unangekündigte Downtimes oder eine
|
||||
kurzfristige Einstellung dieser Seite sind nicht vorgesehen, aber
|
||||
möglich.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue