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 DateTime;
|
||||||
use DBI;
|
use DBI;
|
||||||
use Encode qw(decode encode);
|
use Encode qw(decode encode);
|
||||||
use Email::Sender::Simple qw(sendmail);
|
use Email::Sender::Simple qw(try_to_sendmail);
|
||||||
use Email::Simple;
|
use Email::Simple;
|
||||||
use Geo::Distance;
|
use Geo::Distance;
|
||||||
use List::Util qw(first);
|
use List::Util qw(first);
|
||||||
|
@ -504,11 +504,26 @@ helper 'get_user_id' => sub {
|
||||||
$user_name //= $self->get_user_name;
|
$user_name //= $self->get_user_name;
|
||||||
|
|
||||||
if ( not -e $dbname ) {
|
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(
|
$self->app->dbh->do(
|
||||||
qq{
|
qq{
|
||||||
create table users (
|
create table users (
|
||||||
id integer primary key,
|
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);
|
$self->app->get_userid_query->execute($user_name);
|
||||||
|
@ -987,6 +1008,11 @@ post '/x/register' => sub {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( not length($email) ) {
|
||||||
|
$self->render( 'register', invalid => 'mail_empty' );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ( $user !~ m{ ^ [0-9a-zA-Z_-]+ $ }x ) {
|
if ( $user !~ m{ ^ [0-9a-zA-Z_-]+ $ }x ) {
|
||||||
$self->render( 'register', invalid => 'user_format' );
|
$self->render( 'register', invalid => 'user_format' );
|
||||||
return;
|
return;
|
||||||
|
@ -1038,8 +1064,13 @@ post '/x/register' => sub {
|
||||||
);
|
);
|
||||||
|
|
||||||
# TODO re-enable once remaining registration code is complete
|
# 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' );
|
# $self->render( 'login', from => 'register' );
|
||||||
|
#}
|
||||||
|
#else {
|
||||||
|
# $self->render( 'register', invalid => 'sendmail' );
|
||||||
|
#}
|
||||||
|
|
||||||
$self->render( 'register', invalid => 'not implemented yet' );
|
$self->render( 'register', invalid => 'not implemented yet' );
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,9 +10,40 @@
|
||||||
href="https://de.wikipedia.org/wiki/Cross-Site-Request-Forgery">CSRF</a>
|
href="https://de.wikipedia.org/wiki/Cross-Site-Request-Forgery">CSRF</a>
|
||||||
handeln.</p>
|
handeln.</p>
|
||||||
% }
|
% }
|
||||||
% elsif ($invalid eq 'credentials') {
|
% elsif ($invalid eq 'user_empty') {
|
||||||
<span class="card-title">Ungültige Logindaten</span>
|
<span class="card-title">Leerer Nutzername</span>
|
||||||
<p>Falscher Account oder falsches Passwort.</p>
|
<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 {
|
% else {
|
||||||
<span class="card-title">Unbekannter Fehler</span>
|
<span class="card-title">Unbekannter Fehler</span>
|
||||||
|
@ -67,14 +98,16 @@
|
||||||
<p>
|
<p>
|
||||||
Die Mail-Adresse wird ausschließlich zur Bestätigung der Anmeldung
|
Die Mail-Adresse wird ausschließlich zur Bestätigung der Anmeldung
|
||||||
und für die "Passwort vergessen"-Funktionalität verwendet und nicht
|
und für die "Passwort vergessen"-Funktionalität verwendet und nicht
|
||||||
an Dritte weitergegeben. Weitere erhobene Daten sowie deren Zweck
|
an Dritte weitergegeben. Die <a
|
||||||
und Speicherfristen werden in der <a
|
href="/x/impressum">Datenschutzerklärung</a> beschreibt weitere
|
||||||
href="/x/impressum">Datenschutzerklärung</a> beschrieben.
|
erhobene Daten sowie deren Zweck und Speicherfristen.
|
||||||
|
Accounts werden nach einem Jahr ohne Nutzung automatisch gelöscht.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Für jeden Account wird das Datum der letzten Anmeldung gespeichert.
|
Bitte beachten: Travelynx ist ein privat betriebenes Projekt ohne
|
||||||
Accounts, die mehr als ein Jahr (12 Monate) nicht genutzt wurden,
|
Verfügbarkeitsgarantie. Unangekündigte Downtimes oder eine
|
||||||
werden automatisch und unwiderruflich gelöscht.
|
kurzfristige Einstellung dieser Seite sind nicht vorgesehen, aber
|
||||||
|
möglich.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue