summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xindex.pl39
-rw-r--r--templates/register.html.ep51
2 files changed, 77 insertions, 13 deletions
diff --git a/index.pl b/index.pl
index 1b3a661..856327c 100755
--- a/index.pl
+++ b/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);
- #$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>