Loading index.pl +35 −4 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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 ) } ); Loading Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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' ); }; Loading templates/register.html.ep +42 −9 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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
index.pl +35 −4 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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 ) } ); Loading Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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' ); }; Loading
templates/register.html.ep +42 −9 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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>