diff options
-rwxr-xr-x | index.pl | 39 | ||||
-rw-r--r-- | templates/register.html.ep | 51 |
2 files changed, 77 insertions, 13 deletions
@@ -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); - #$self->render( 'login', from => 'register' ); + #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' ); }; diff --git a/templates/register.html.ep b/templates/register.html.ep index 2a421bb..3e69239 100644 --- a/templates/register.html.ep +++ b/templates/register.html.ep @@ -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> |