From 89e709d8d593939ab528b81d125fd37d303c4fa9 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Wed, 30 Sep 2020 19:12:29 +0200 Subject: Allow linking a Träwelling account, auto-sync Träwelling→travelynx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit travelynx→Träwelling is still work-in-progress Squashed commit of the following: commit 97faa6e2e6c8d20fba30f2d0f6e78187ceeb72e6 Author: Daniel Friesel Date: Wed Sep 30 18:50:05 2020 +0200 improve traewelling log and tx handling commit 487d7dd728b9d45b731bdc7098cf3358ea2e206e Author: Daniel Friesel Date: Wed Sep 30 18:02:41 2020 +0200 add missing traewelling template commit 0148da2f48d9a52dcddc0ab81f83d8f8ac3062ab Author: Daniel Friesel Date: Wed Sep 30 18:02:35 2020 +0200 improve traewelling pull sync commit 4861a9750f9f2d7621043361d0af6b0a8869a0df Author: Daniel Friesel Date: Tue Sep 29 22:14:24 2020 +0200 wip checkin from traewelling commit f6aeb6f06998a2a7a80f63a7b1b688b1a26b66bd Author: Daniel Friesel Date: Tue Sep 29 18:37:53 2020 +0200 refactor traewelling integration. login and logout are less of a hack now. checkin and checkout are not supported at the moment. --- templates/account.html.ep | 22 +++++ templates/traewelling.html.ep | 220 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 242 insertions(+) create mode 100644 templates/traewelling.html.ep (limited to 'templates') diff --git a/templates/account.html.ep b/templates/account.html.ep index 9b049a3..8943e3f 100644 --- a/templates/account.html.ep +++ b/templates/account.html.ep @@ -16,6 +16,9 @@ % elsif ($success eq 'privacy') { Einstellungen zu öffentlichen Account-Daten geändert % } + % elsif ($success eq 'traewelling') { + Traewelling-Verknüpfung aktualisiert + % } % elsif ($success eq 'use_history') { Einstellungen zu vorgeschlagenen Verbindungen geändert % } @@ -31,6 +34,7 @@

Account

% my $acc = current_user(); % my $hook = get_webhook(); +% my $traewelling = traewelling->get($acc->{id}); % my $use_history = users->use_history(uid => $acc->{id});
@@ -110,6 +114,24 @@ % } + + Traewelling + + edit + % if (not ($traewelling->{token})) { + Nicht verknüpft + % } + % elsif ($traewelling->{errored}) { + Fehlerhaft error + % } + % elsif (not ($traewelling->{push_sync} or $traewelling->{pull_sync})) { + Verknüpft mit <%= $traewelling->{data}{user_name} // $traewelling->{email} %>, Synchronisierung inaktiv + % } + % else { + Verknüpft mit <%= $traewelling->{data}{user_name} // $traewelling->{email} %> + % } + + Registriert am <%= $acc->{registered_at}->strftime('%d.%m.%Y %H:%M') %> diff --git a/templates/traewelling.html.ep b/templates/traewelling.html.ep new file mode 100644 index 0000000..3a5eab3 --- /dev/null +++ b/templates/traewelling.html.ep @@ -0,0 +1,220 @@ +% if (my $invalid = stash('invalid')) { + %= include '_invalid_input', invalid => $invalid +% } + +

Träwelling

+ +
+
+
+
+ Beta-Feature +

Die Verbindung von Checkinservices bietet viele Möglichkeiten für interessante Fehlerbilder. + Falls etwas nicht klappt, bitte mit möglichst detaillierten Angaben zum Hergang einen Bug melden.

+

+ Bekannte Probleme: Hooks werden bei einem Checkin via Träwelling nicht ausgelöst. +

+
+ +
+
+
+ +% if (stash('new_traewelling')) { +
+
+ % if ($traewelling->{token}) { +
+
+ Träwelling verknüpft + % my $user = $traewelling->{data}{user_name} // $traewelling->{email}; +

Dein travelynx-Account hat nun ein Jahr lang Zugriff auf + den Träwelling-Account @<%= $user %>.

+
+
+ % } + % elsif (my $login_err = stash('login_error')) { +
+
+ Login-Fehler +

Der Login bei Träwelling ist fehlgeschlagen: <%= $login_err %>

+
+
+ % } + % elsif (my $logout_err = stash('logout_error')) { +
+
+ Logout-Fehler +

Der Logout bei Träwelling ist fehlgeschlagen: <%= $logout_err %>. + Dein Login-Token bei travelynx wurde dennoch gelöscht, so + dass nun kein Zugriff von travelynx auf Träwelling mehr + möglich ist. In den Träwelling-Einstellungen + kannst du ihn vollständig löschen.

+
+
+ % } +
+
+% } + +% if (not $traewelling->{token}) { +
+
+

+ Hier hast du die Möglichkeit, deinen travelynx-Account mit einem + Account bei Träwelling zu + verknüpfen. Dies erlaubt die automatische Übernahme von Checkins + zwischen den beiden Diensten. Träwelling-Checkins in + Nahverkehrsmittel und Züge außerhalb des deutschen Schienennetzes + werden nicht unterstützt und ignoriert. +

+

+ Mit E-Mail und Passwort wird ein Login über die Träwelling-API + durchgeführt. Die E-Mail und das dabei generierte Token werden + von travelynx gespeichert. Das Passwort wird ausschließlich für + den Login verwendet und nicht gespeichert. Der Login kann jederzeit + sowohl auf dieser Seite als auch über die Träwelling-Einstellungen + widerrufen werden. Nach einem Jahr läuft er automatisch ab. +

+
+
+
+ %= form_for '/account/traewelling' => (method => 'POST') => begin + %= csrf_field +
+ account_circle + %= text_field 'email', id => 'email', class => 'validate', required => undef, maxlength => 250 + +
+
+ lock + %= password_field 'password', id => 'password', class => 'validate', required => undef + +
+
+ +
+ %= end +
+% } +% else { +
+
+

+ Dieser travelynx-Account ist mit dem Träwelling-Account + % if (my $user = $traewelling->{data}{user_name}) { + <%= $user %> + % } + % else { + %= $traewelling->{email} + % } + verknüpft. +

+
+
+ %= form_for '/account/traewelling' => (method => 'POST') => begin +
+ %= csrf_field +
+
+ +
+
+
+
+ +
+

Die Synchronisierung erfolgt spätestens drei Minuten nach der + Zielwahl. Träwelling-Checkins können von travelynx noch nicht + rückgängig gemacht werden.

+
+
+
+ +
+

Alle drei Minuten wird dein Status auf Träwelling abgefragt. + Falls du gerade in einen Zug eingecheckt bist, wird dieser von + travelynx übernommen. Träwelling-Checkins in Nahverkehrsmittel + und Züge außerhalb des deutschen Schienennetzes werden nicht + unterstützt.

+
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ %= end +

Status

+
+
+ % if ($traewelling->{latest_run}->epoch) { + Letzter Kontakt mit Träwelling <%= $traewelling->{latest_run}->strftime('am %d.%m.%Y um %H:%M:%S') %>
+ % if ($traewelling->{errored}) { + error + Fehler: <%= $traewelling->{data}{error} %> + % } + % } + % else { + Bisher wurde noch keine Synchronisierung durchgeführt. + % } +
+
+

Log

+
+
+
    + % for my $log_entry (@{$traewelling->{data}{log} // []}) { +
  • + <%= $log_entry->[0]->strftime('%d.%m.%Y %H:%M:%S') %> – + % if ($log_entry->[2]) { + Träwelling #<%= $log_entry->[2] %> – + % } + %= $log_entry->[1] +
  • + % } +
+
+
+% } -- cgit v1.2.3