summaryrefslogtreecommitdiff
path: root/lib/Travelynx/Model/Traewelling.pm
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2020-10-04 10:38:09 +0200
committerDaniel Friesel <derf@finalrewind.org>2020-10-04 10:38:09 +0200
commit80b02a47b443280a7b8876c45c2bad0b605a7968 (patch)
treef1871d61c6044c326de1a4724ebbd737d0fb3431 /lib/Travelynx/Model/Traewelling.pm
parent5e2813e36eae43372842b85b0424309b7147678b (diff)
Traewelling: Warn when bearer token is about to expire
Diffstat (limited to 'lib/Travelynx/Model/Traewelling.pm')
-rw-r--r--lib/Travelynx/Model/Traewelling.pm21
1 files changed, 18 insertions, 3 deletions
diff --git a/lib/Travelynx/Model/Traewelling.pm b/lib/Travelynx/Model/Traewelling.pm
index 1a2f4ec..c9b2181 100644
--- a/lib/Travelynx/Model/Traewelling.pm
+++ b/lib/Travelynx/Model/Traewelling.pm
@@ -37,24 +37,29 @@ sub link {
my $log = [ [ $self->now->epoch, "Erfolgreich angemeldet" ] ];
my $data = {
+ log => $log,
+ expires => $opt{expires}->epoch,
+ };
+
+ my $user_entry = {
user_id => $opt{uid},
email => $opt{email},
push_sync => 0,
pull_sync => 0,
token => $opt{token},
- data => JSON->new->encode( { log => $log } ),
+ data => JSON->new->encode($data),
};
$self->{pg}->db->insert(
'traewelling',
- $data,
+ $user_entry,
{
on_conflict => \
'(user_id) do update set email = EXCLUDED.email, token = EXCLUDED.token, push_sync = false, pull_sync = false, data = null, errored = false, latest_run = null'
}
);
- return $data;
+ return $user_entry;
}
sub set_user {
@@ -96,6 +101,16 @@ sub get {
for my $log_entry ( @{ $res_h->{data}{log} // [] } ) {
$log_entry->[0] = epoch_to_dt( $log_entry->[0] );
}
+ $res_h->{expires_on} = epoch_to_dt( $res_h->{data}{expires} );
+
+ my $expires_in = ( $res_h->{data}{expires} // 0 ) - $self->now->epoch;
+
+ if ( $expires_in < 0 ) {
+ $res_h->{expired} = 1;
+ }
+ elsif ( $expires_in < 14 * 24 * 3600 ) {
+ $res_h->{expiring} = 1;
+ }
return $res_h;
}