From fa0f043f18e431e7cf3a7e78d3a4b2e03b07edae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20OUDOT?= Date: Thu, 5 Nov 2020 12:26:35 +0100 Subject: [PATCH] Check internal refresh result (#2375) --- .../Lemonldap/NG/Portal/Plugins/Refresh.pm | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Refresh.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Refresh.pm index dc8bfb742..6334b4508 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Refresh.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Refresh.pm @@ -2,6 +2,7 @@ package Lemonldap::NG::Portal::Plugins::Refresh; use strict; use Mouse; +use JSON; our $VERSION = '2.0.10'; @@ -35,9 +36,26 @@ sub run { ); $req->id($id); $req->user( $info->{uid} ); - eval { $self->p->refresh($req); }; - $self->logger->debug("Refresh: $@") if $@; - $c++; + my $res; + eval { $res = $self->p->refresh($req); }; + if ($@) { + $self->logger->error("Refresh: $@"); + next; + } + if ( ref($res) ne "ARRAY" ) { + $self->logger->error("Refresh failed for session $id"); + next; + } + my $refreshJSON = $res->[2]->[0]; + $self->logger->debug("Refresh result: $refreshJSON"); + my $refreshHASH = from_json($refreshJSON); + if ( $refreshHASH->{error} == 0 ) { + $self->logger->notice("Refresh succeed for session $id"); + $c++; + } + else { + $self->logger->error("Refresh failed for session $id"); + } } $req->userData( {} ); $req->$_(undef) foreach (qw(user id));