190 lines
5 KiB
Text
190 lines
5 KiB
Text
<h1>Account</h1>
|
||
% my $acc = get_user_data();
|
||
<div class="row">
|
||
<div class="col s12">
|
||
<table class="striped">
|
||
<tr>
|
||
<th scope="row">Name</th>
|
||
<td><%= $acc->{name} %></td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">Mail</th>
|
||
<td><%= $acc->{email} %></td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">Registriert am</th>
|
||
<td><%= $acc->{registered_at}->strftime('%d.%m.%Y %H:%M') %></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
<div class="row">
|
||
<div class="col s1 m1 l3">
|
||
</div>
|
||
<div class="col s10 m10 l6 center-align">
|
||
%= form_for 'logout' => begin
|
||
%= csrf_field
|
||
<button class="btn waves-effect waves-light" type="submit" name="action" value="logout">
|
||
Abmelden
|
||
</button>
|
||
%= end
|
||
</div>
|
||
<div class="col s1 m1 l3">
|
||
</div>
|
||
</div>
|
||
|
||
<h1>API</h1>
|
||
% my $token = get_api_token();
|
||
<div class="row">
|
||
<div class="col s12">
|
||
<p>
|
||
Die folgenden API-Token erlauben den passwortlosen automatisierten Zugriff auf
|
||
API-Endpunkte. Bitte umsichtig behandeln – sobald ein Token gesetzt
|
||
ist, können mit Kenntnis von Token und Nutzer-ID alle zugehörigen
|
||
API-Aktionen ausgeführt werden. Logindaten sind dazu nicht
|
||
erforderlich.
|
||
</p>
|
||
<table class="striped">
|
||
<tr>
|
||
<th scope="row">Status</th>
|
||
<td>
|
||
% if ($token->{status}) {
|
||
%= $acc->{id} . '-' . $token->{status}
|
||
% }
|
||
% else {
|
||
—
|
||
% }
|
||
</td>
|
||
<td>
|
||
%= form_for 'set_token' => begin
|
||
%= csrf_field
|
||
%= hidden_field 'token' => 'status'
|
||
<button class="btn waves-effect waves-light" type="submit" name="action" value="generate">
|
||
Generieren
|
||
</button>
|
||
<button class="btn waves-effect waves-light red" type="submit" name="action" value="delete">
|
||
Löschen
|
||
</button>
|
||
%= end
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">History</th>
|
||
<td>
|
||
% if ($token->{history}) {
|
||
%= $acc->{id} . '-' . $token->{history}
|
||
% }
|
||
% else {
|
||
—
|
||
% }
|
||
</td>
|
||
<td>
|
||
%= form_for 'set_token' => begin
|
||
%= csrf_field
|
||
%= hidden_field 'token' => 'history'
|
||
<button class="btn waves-effect waves-light" type="submit" name="action" value="generate">
|
||
Generieren
|
||
</button>
|
||
<button class="btn waves-effect waves-light red" type="submit" name="action" value="delete">
|
||
Löschen
|
||
</button>
|
||
%= end
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">Travel</th>
|
||
<td>
|
||
% if ($token->{action}) {
|
||
%= $acc->{id} . '-' . $token->{action}
|
||
% }
|
||
% else {
|
||
—
|
||
% }
|
||
</td>
|
||
<td>
|
||
%= form_for 'set_token' => begin
|
||
%= csrf_field
|
||
%= hidden_field 'token' => 'action'
|
||
<button class="btn waves-effect waves-light" type="submit" name="action" value="generate">
|
||
Generieren
|
||
</button>
|
||
<button class="btn waves-effect waves-light red" type="submit" name="action" value="delete">
|
||
Löschen
|
||
</button>
|
||
%= end
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
|
||
<h2>Status</h2>
|
||
% my $api_root = $self->url_for('/api/v0')->to_abs->scheme('https');
|
||
<div class="row">
|
||
<div class="col s12">
|
||
<p>
|
||
Das Format der API v0 kann sich noch ändern, ab v1 ist es stabil.
|
||
</p>
|
||
<p style="font-family: Monospace;">
|
||
% if ($token->{status}) {
|
||
curl <%= $api_root %>/status/<%= $acc->{id} %>-<%= $token->{status} // 'TOKEN' %>
|
||
% }
|
||
% else {
|
||
curl <%= $api_root %>/status/TOKEN
|
||
% }
|
||
</p>
|
||
<p style="font-family: Monospace;">
|
||
{<br/>
|
||
"checked_in" : true / false,<br/>
|
||
"station_ds100" : "EE", (DS100-Kürzel der letzten Station)<br/>
|
||
"station_name" : "Essen Hbf", (Name der letzten Station)<br/>
|
||
"train_type" : "ICE", (aktueller / letzter Zugtyp)<br/>
|
||
"train_line" : "", (Linie, ggf. null)<br/>
|
||
"train_no" : "1234", (Zugnummer)<br/>
|
||
"action_ts" : 1234567, (UNIX-Timestamp des letzten Checkin/Checkout)<br/>
|
||
"sched_ts" : 1234567, (UNIX-Timestamp der zugehörigen Ankunft/Abfahrt gemäß Fahrplan. Ggf. 0)<br/>
|
||
"real_ts" : 1234567, (UNIX-Timestamp der zugehörigen Ankunft/Abfahrt laut Echtzeitdaten. Ggf. 0)<br/>
|
||
}
|
||
</p>
|
||
<p>
|
||
Im Fehlerfall: <span style="font-family: Monospace;">{ "error" : "Begründung" }</span>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<h1>Export</h1>
|
||
|
||
<div class="row">
|
||
<div class="col s12">
|
||
<ul>
|
||
<li><a href="/export.json">Rohdaten</a> (Kein API-Ersatz, das Format kann sich jederzeit ändern)</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
% if (not $acc->{deletion_requested}) {
|
||
<h1>Account löschen</h1>
|
||
<div class="row">
|
||
<div class="col s12">
|
||
<p>
|
||
Der Account wird zunächst nur zur Löschung vorgemerkt. Wenn der
|
||
Auftrag nach drei Tagen nicht zurückgenommen wird, wird der Account
|
||
mit allen zugehörigen Reisedaten ohne weitere Rückfragen entfernt.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="row">
|
||
<div class="col s1 m1 l3">
|
||
</div>
|
||
<div class="col s10 m10 l6 center-align">
|
||
%= form_for 'delete' => begin
|
||
%= csrf_field
|
||
<button class="btn waves-effect waves-light red" type="submit" name="action" value="delete">
|
||
Account löschen
|
||
</button>
|
||
%= end
|
||
</div>
|
||
<div class="col s1 m1 l3">
|
||
</div>
|
||
</div>
|
||
% }
|