% 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 %>“

% }
% }

Account

% my $acc = current_user();
Name <%= $acc->{name} %>
Mail <%= $acc->{email} %>
Passwort ändern
Registriert am <%= $acc->{registered_at}->strftime('%d.%m.%Y %H:%M') %>
%= form_for 'logout' => begin %= csrf_field %= end
% my $token = get_api_token();

API

Die folgenden API-Token erlauben den passwortlosen automatisierten Zugriff auf API-Endpunkte. Bitte umsichtig behandeln – sobald ein Token gesetzt ist, können damit ohne Logindaten alle zugehörigen API-Aktionen ausgeführt werden.

Status % if ($token->{status}) { %= $acc->{id} . '-' . $token->{status} % } % else { — % } %= form_for 'set_token' => begin %= csrf_field %= hidden_field 'token' => 'status' %= end
History % if ($token->{history}) { %= $acc->{id} . '-' . $token->{history} % } % else { — % } %= form_for 'set_token' => begin %= csrf_field %= hidden_field 'token' => 'history' %= end
Travel % if ($token->{action}) { %= $acc->{id} . '-' . $token->{action} % } % else { — % } %= form_for 'set_token' => begin %= csrf_field %= hidden_field 'token' => 'action' %= end
% my $api_root = $self->url_for('/api/v0')->to_abs->scheme('https');

Status

% if ($token->{status}) { curl <%= $api_root %>/status/<%= $acc->{id} %>-<%= $token->{status} // 'TOKEN' %> % } % else { curl <%= $api_root %>/status/TOKEN % }

Beispiel / Layout:

{
"deprecated" : true / false, (falls true: Diese API-Version wird irgendwann abgeschaltet, bitte auf eine neue umsteigen)
"checked_in" : true / false,
"station" : {
"name" : "Essen Hbf", (Name der letzten Station)
"ds100" : "EE", (DS100-Kürzel)
"uic" : 8000098, (Internationale Bahnhofsnummer)
"longitude" : 7.014793,
"latitude" : 51.451355,
},
"train" : {
"type" : "ICE", (aktueller / letzter Zugtyp)
"line" : null, (Linie als String, nicht immer numerisch, ggf. null)
"no" : "1234", (Zugnummer als String)
},
"actionTime" : 1234567, (UNIX-Timestamp des letzten Checkin/Checkout)
"scheduledTime" : 1234567, (UNIX-Timestamp der zugehörigen Ankunft/Abfahrt gemäß Fahrplan. Ggf. 0)
"realTime" : 1234567, (UNIX-Timestamp der zugehörigen Ankunft/Abfahrt laut Echtzeitdaten. Ggf. 0)
}

Im Fehlerfall: { "error" : "Begründung" }

History

Coming soon.

Travel

Ein- und Auschecken per API. Coming soon.

Export

% if (not $acc->{deletion_requested}) {

Löschen

Der Löschauftrag wird vorgemerkt und erst nach drei Tagen umgesetzt, bis dahin kann er jederzeit zurückgenommen werden. Nach Ablauf der drei Tage wird der Account mit allen zugehörigen Reisedaten ohne weitere Rückfragen entfernt.

%= form_for 'delete' => begin
lock %= password_field 'password', id => 'password', class => 'validate', required => undef, autocomplete => 'current-password'
%= csrf_field
%= end
% }