Commit 8d353fcf authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

registration: more error handling

parent 32f3334b
Loading
Loading
Loading
Loading
+35 −4
Original line number Diff line number Diff line
@@ -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);
	#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' );
};
+42 −9
Original line number Diff line number Diff line
@@ -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>