From 4ad1a1d20e52f7aa4b1ae2b7cc84c83c584d6725 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Tue, 30 Apr 2019 10:46:46 +0200 Subject: [PATCH] Move invalid input errors into common sub-template --- lib/Travelynx/Controller/Account.pm | 9 +-- templates/_invalid_input.html.ep | 88 +++++++++++++++++++++++++++++ templates/account.html.ep | 25 +------- templates/change_password.html.ep | 32 +---------- templates/login.html.ep | 28 +-------- templates/recover_password.html.ep | 32 +---------- templates/register.html.ep | 60 +------------------- templates/set_password.html.ep | 28 +-------- 8 files changed, 99 insertions(+), 203 deletions(-) create mode 100644 templates/_invalid_input.html.ep diff --git a/lib/Travelynx/Controller/Account.pm b/lib/Travelynx/Controller/Account.pm index 5f06f2d..259fb9e 100644 --- a/lib/Travelynx/Controller/Account.pm +++ b/lib/Travelynx/Controller/Account.pm @@ -190,7 +190,7 @@ sub delete { ) ) { - $self->render( 'account', invalid => 'password' ); + $self->render( 'account', invalid => 'deletion password' ); return; } $self->flag_user_deletion( $self->current_user->{id} ); @@ -293,7 +293,8 @@ sub request_password_reset { my $uid = $self->get_uid_by_name_and_mail( $name, $email ); if ( not $uid ) { - $self->render( 'recover_password', invalid => 'credentials' ); + $self->render( 'recover_password', + invalid => 'recovery credentials' ); return; } @@ -360,7 +361,7 @@ sub request_password_reset { return; } if ( not $self->verify_password_token( $id, $token ) ) { - $self->render( 'recover_password', invalid => 'token' ); + $self->render( 'recover_password', invalid => 'recovery token' ); return; } if ( $password ne $password2 ) { @@ -428,7 +429,7 @@ sub recover_password { $self->render('set_password'); } else { - $self->render( 'recover_password', invalid => 'token' ); + $self->render( 'recover_password', invalid => 'recovery token' ); } } diff --git a/templates/_invalid_input.html.ep b/templates/_invalid_input.html.ep new file mode 100644 index 0000000..d79ad03 --- /dev/null +++ b/templates/_invalid_input.html.ep @@ -0,0 +1,88 @@ +
+
+
+
+ % if ($invalid eq 'csrf') { + Ungültiger CSRF-Token +

Sind Cookies aktiviert? Ansonsten könnte es sich um einen + Fall von CSRF + handeln.

+ % } + % elsif ($invalid eq 'credentials') { + Ungültige Logindaten +

Falscher Account oder falsches Passwort.

+ % } + % elsif ($invalid eq 'recovery credentials') { + Ungültige Daten +

Falscher Account oder falsches Mail-Adresse.

+ % } + % elsif ($invalid eq 'user_empty') { + Leerer Nutzername +

Bitte gib einen Nutzernamen an.

+ % } + % elsif ($invalid eq 'mail_empty') { + Leere Mail-Adresse +

Bitte gib eine E-Mail-Adresse an.

+ % } + % elsif ($invalid eq 'user_format') { + Ungültiger Nutzername +

Für den Nutzernamen erlaubte Zeichen sind + 0-9, a-z, A-Z sowie Unterstrich (_) und Bindestrich (-).

+ % } + % elsif ($invalid eq 'user_collision') { + Name bereits vergeben +

Es gibt bereits einen Account unter diesem Namen.

+ % } + % elsif ($invalid eq 'mail_blacklisted') { + Mailadresse nicht nutzbar +

Mit der angegebenen E-Mail-Adresse können derzeit keine + travelynx-Accounts registriert werden.

+ % } + % elsif ($invalid eq 'sendmail') { + Mailversand fehlgeschlagen +

Der Account wurde nicht angelegt, da die Bestätigungsmail + nicht verschickt werden konnte. + Überprüfe bitte, ob die Adresse gültig ist.

+ % } + % elsif ($invalid eq 'token') { + Ungültiger Token +

Die Verifikation deiner Mail-Adresse ist fehlgeschlagen oder du hast den Token schon einmal verwendet.

+ % } + % elsif ($invalid eq 'confirmation') { + Account nicht freigeschaltet +

Bitte besuche zuerst den per Mail verschickten Bestätigungslink.

+ % } + % elsif ($invalid eq 'password') { + Ungültiges Passwort +

Das aktuelle Passwort wurde nicht korrekt eingegeben.

+ % } + % elsif ($invalid eq 'password_notequal') { + Passwort ungültig +

Die angegebenen Passwörter sind nicht identisch.

+ % } + % elsif ($invalid eq 'password_short') { + Passwort zu kurz +

Das Passwort muss mindestens acht Zeichen lang sein.

+ % } + % elsif ($invalid eq 'in progress') { + Passwort-Reset wird durchgeführt +

Es wurde bereits ein Reset-Link verschickt.

+ % } + % elsif ($invalid eq 'recovery token') { + Ungültiger Token +

Der Reset-Token ist ungültig oder abgelaufen. Neuen beantragen?

+ % } + % elsif ($invalid eq 'deletion password') { + Ungültiges Passwort +

Aus Sicherheitsgründen kann der Account nur nach Passworteingabe + gelöscht werden.

+ % } + % else { + Fehler +

<%= $invalid %>

+ % } +
+
+
+
diff --git a/templates/account.html.ep b/templates/account.html.ep index 90c64fc..ca43340 100644 --- a/templates/account.html.ep +++ b/templates/account.html.ep @@ -1,28 +1,5 @@ % if (my $invalid = stash('invalid')) { -
-
-
-
- % if ($invalid eq 'csrf') { - Ungültiger CSRF-Token -

Sind Cookies aktiviert? Ansonsten könnte es sich um einen - Fall von CSRF - handeln.

- % } - % elsif ($invalid eq 'password') { - Ungültiges Passwort -

Aus Sicherheitsgründen kann der Account nur nach Passworteingabe - gelöscht werden.

- % } - % else { - Unbekannter Fehler -

„<%= $invalid %>“

- % } -
-
-
-
+ %= include '_invalid_input', invalid => $invalid % }

Account

diff --git a/templates/change_password.html.ep b/templates/change_password.html.ep index bae28d9..fa03e28 100644 --- a/templates/change_password.html.ep +++ b/templates/change_password.html.ep @@ -1,35 +1,5 @@ % if (my $invalid = stash('invalid')) { -
-
-
-
- % if ($invalid eq 'csrf') { - Ungültiger CSRF-Token -

Sind Cookies aktiviert? Ansonsten könnte es sich um einen - Fall von CSRF - handeln.

- % } - % elsif ($invalid eq 'password_notequal') { - Passwort ungültig -

Die angegebenen neuen Passwörter sind nicht identisch.

- % } - % elsif ($invalid eq 'password_short') { - Passwort zu kurz -

Das neue Passwort muss mindestens acht Zeichen lang sein.

- % } - % elsif ($invalid eq 'password') { - Ungültiges Passwort -

Das aktuelle Passwort wurde nicht korrekt eingegeben.

- % } - % else { - Unbekannter Fehler -

„<%= $invalid %>“

- % } -
-
-
-
+ %= include '_invalid_input', invalid => $invalid % }

Passwort ändern

diff --git a/templates/login.html.ep b/templates/login.html.ep index 283aa60..08146c8 100644 --- a/templates/login.html.ep +++ b/templates/login.html.ep @@ -21,33 +21,7 @@ % } % if (my $invalid = stash('invalid')) { -
-
-
-
- % if ($invalid eq 'csrf') { - Ungültiger CSRF-Token -

Sind Cookies aktiviert? Ansonsten könnte es sich um einen - Fall von CSRF - handeln.

- % } - % elsif ($invalid eq 'credentials') { - Ungültige Logindaten -

Falscher Account oder falsches Passwort.

- % } - % elsif ($invalid eq 'confirmation') { - Account nicht freigeschaltet -

Bitte besuche zuerst den per Mail verschickten Bestätigungslink.

- % } - % else { - Unbekannter Fehler -

„<%= $invalid %>“

- % } -
-
-
-
+ %= include '_invalid_input', invalid => $invalid % } % if (my $from = stash('from')) {
diff --git a/templates/recover_password.html.ep b/templates/recover_password.html.ep index 4ebc41a..a3332c3 100644 --- a/templates/recover_password.html.ep +++ b/templates/recover_password.html.ep @@ -1,36 +1,6 @@

Passwort zurücksetzen

% if (my $invalid = stash('invalid')) { -
-
-
-
- % if ($invalid eq 'csrf') { - Ungültiger CSRF-Token -

Sind Cookies aktiviert? Ansonsten könnte es sich um einen - Fall von CSRF - handeln.

- % } - % elsif ($invalid eq 'credentials') { - Ungültige Daten -

Falscher Account oder falsches Mail-Adresse.

- % } - % elsif ($invalid eq 'in progress') { - Passwort-Reset wird durchgeführt -

Es wurde bereits ein Reset-Link verschickt.

- % } - % elsif ($invalid eq 'token') { - Ungültiger Token -

Der Reset-Token ist ungültig oder abgelaufen. Neuen beantragen?

- % } - % else { - Unbekannter Fehler -

„<%= $invalid %>“

- % } -
-
-
-
+ %= include '_invalid_input', invalid => $invalid % } % if (stash('success')) {
diff --git a/templates/register.html.ep b/templates/register.html.ep index 06ecce4..599f2b3 100644 --- a/templates/register.html.ep +++ b/templates/register.html.ep @@ -1,63 +1,5 @@ % if (my $invalid = stash('invalid')) { -
-
-
-
- % if ($invalid eq 'csrf') { - Ungültiger CSRF-Token -

Sind Cookies aktiviert? Ansonsten könnte es sich um einen - Fall von CSRF - handeln.

- % } - % elsif ($invalid eq 'user_empty') { - Leerer Nutzername -

Bitte gib einen Nutzernamen an.

- % } - % elsif ($invalid eq 'mail_empty') { - Leere Mail-Adresse -

Bitte gib eine E-Mail-Adresse an.

- % } - % elsif ($invalid eq 'user_format') { - Ungültiger Nutzername -

Für den Nutzernamen erlaubte Zeichen sind - 0-9, a-z, A-Z sowie Unterstrich (_) und Bindestrich (-).

- % } - % elsif ($invalid eq 'user_collision') { - Name bereits vergeben -

Es gibt bereits einen Account unter diesem Namen.

- % } - % elsif ($invalid eq 'password_notequal') { - Passwort ungültig -

Die angegebenen Passwörter sind nicht identisch.

- % } - % elsif ($invalid eq 'password_short') { - Passwort zu kurz -

Das Passwort muss mindestens acht Zeichen lang sein.

- % } - % elsif ($invalid eq 'mail_blacklisted') { - Mailadresse nicht nutzbar -

Mit der angegebenen E-Mail-Adresse können derzeit keine - travelynx-Accounts registriert werden.

- % } - % elsif ($invalid eq 'sendmail') { - Mailversand fehlgeschlagen -

Der Account wurde nicht angelegt, da die Bestätigungsmail - nicht verschickt werden konnte. - Überprüfe bitte, ob die Adresse gültig ist.

- % } - % elsif ($invalid eq 'token') { - Ungültiger Token -

Die Verifikation deiner Mail-Adresse ist fehlgeschlagen oder du hast den Token schon einmal verwendet.

- % } - % else { - Unbekannter Fehler -

„<%= $invalid %>“

- % } -
-
-
-
+ %= include '_invalid_input', invalid => $invalid % } %= form_for '/register' => (method => 'POST') => begin %= csrf_field diff --git a/templates/set_password.html.ep b/templates/set_password.html.ep index 571ee0b..49eea9d 100644 --- a/templates/set_password.html.ep +++ b/templates/set_password.html.ep @@ -1,31 +1,5 @@ % if (my $invalid = stash('invalid')) { -
-
-
-
- % if ($invalid eq 'csrf') { - Ungültiger CSRF-Token -

Sind Cookies aktiviert? Ansonsten könnte es sich um einen - Fall von CSRF - handeln.

- % } - % elsif ($invalid eq 'password_notequal') { - Passwort ungültig -

Die angegebenen neuen Passwörter sind nicht identisch.

- % } - % elsif ($invalid eq 'password_short') { - Passwort zu kurz -

Das neue Passwort muss mindestens acht Zeichen lang sein.

- % } - % else { - Unbekannter Fehler -

„<%= $invalid %>“

- % } -
-
-
-
+ %= include '_invalid_input', invalid => $invalid % }

Neues Passwort eintragen