diff options
| -rwxr-xr-x | index.pl | 39 | ||||
| -rw-r--r-- | templates/register.html.ep | 51 | 
2 files changed, 77 insertions, 13 deletions
| @@ -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> | 
