% if (my $invalid = stash('invalid')) { <div class="row"> <div class="col s12"> <div class="card red darken-4"> <div class="card-content white-text"> % if ($invalid eq 'csrf') { <span class="card-title">Ungültiger CSRF-Token</span> <p>Sind Cookies aktiviert? Ansonsten könnte es sich um einen Fall von <a href="https://de.wikipedia.org/wiki/Cross-Site-Request-Forgery">CSRF</a> handeln.</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 derzeit keine travelynx-Accounts registriert werden.</p> % } % elsif ($invalid eq 'sendmail') { <span class="card-title">Mailversand fehlgeschlagen</span> <p>Der Account wurde nicht angelegt, da die Bestätigungsmail nicht verschickt werden konnte. Überprüfe bitte, ob die Adresse gültig ist.</p> % } % elsif ($invalid eq 'token') { <span class="card-title">Ungültiger Token</span> <p>Die Verifikation deiner Mail-Adresse ist fehlgeschlagen oder du hast den Token schon einmal verwendet.</p> % } % else { <span class="card-title">Unbekannter Fehler</span> <p>„<%= $invalid %>“</p> % } </div> </div> </div> </div> % } %= form_for '/register' => (method => 'POST') => begin %= csrf_field <div class="row"> <div class="input-field col l6 m12 s12"> <i class="material-icons prefix">account_circle</i> %= text_field 'user', id => 'account', class => 'validate', required => undef, pattern => '[0-9a-zA-Z_-]+', maxlength => 60, autocomplete => 'username' <label for="account">Name (alphanumerisch)</label> </div> <div class="input-field col l6 m12 s12"> <i class="material-icons prefix">email</i> %= email_field 'email', id => 'email', class => 'validate', required => undef, maxlength => 250 <label for="email">Mail-Adresse</label> </div> <div class="input-field col l6 m12 s12"> <i class="material-icons prefix">lock</i> %= password_field 'password', id => 'password', class => 'validate', required => undef, minlength => 8, autocomplete => 'new-password' <label for="password">Passwort</label> </div> <div class="input-field col l6 m12 s12"> <i class="material-icons prefix">lock</i> %= password_field 'password2', id => 'password2', class => 'validate', required => undef, minlength => 8, autocomplete => 'new-password' <label for="password2">Passwort wiederholen</label> </div> </div> <div class="row"> <div class="col s3 m3 l3"> </div> <div class="col s6 m6 l6 center-align"> <button class="btn waves-effect waves-light" type="submit" name="action" value="register"> Registrieren <i class="material-icons right">send</i> </button> </div> <div class="col s3 m3 l3"> </div> </div> %= end <div class="row"> <div class="col s12"> <p> Nach der Registrierung wird ein für 48 Stunden gültiger Bestätigungslink an die angegebene Mail-Adresse geschickt. Eine Anmeldung ist erst nach Bestätigung der Mail-Adresse möglich. </p> <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. Die <a href="/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> 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>