RefreshSession plugin doesn't work with choice
Affected version
Version: 2.18.1
Summary
- Configure Auth::Choice
- Enable RefreshSession plugin
- Login
- refresh using the /refreshsession API
- it fails because _choice isn't set
Logs
[debug] Start routing refreshsessions
[notice] Refresh request for abarnes
[debug] [notice] Refresh request for abarnes
[debug] Processing getUser
[debug] Returned error: 9 (PE_FIRSTACCESS)
[warn] Refresh failed for session 1b4228c3aea6021e271c7ce7c8acccec663ac91f5c00dd02f9379e3b53495e5d
Possible fixes
populate userData in $req with all sessions attribute (including _choice) before calling the portal refresh function:
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 6334b4508..8fd6935f4 100644
--- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Refresh.pm
+++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Plugins/Refresh.pm
@@ -36,6 +36,7 @@ sub run {
);
$req->id($id);
$req->user( $info->{uid} );
+ $req->userData( $sessions->{$id} );
my $res;
eval { $res = $self->p->refresh($req); };
if ($@) {
does it look ok for you @guimard ?