Allow getCookies webservice to be used with Multi backend (#519)
This commit is contained in:
parent
52814914de
commit
2d7c4fd864
|
@ -9,9 +9,11 @@ use strict;
|
||||||
use Lemonldap::NG::Portal::Simple;
|
use Lemonldap::NG::Portal::Simple;
|
||||||
use Lemonldap::NG::Portal::AuthNull;
|
use Lemonldap::NG::Portal::AuthNull;
|
||||||
|
|
||||||
our $VERSION = '1.2.0';
|
our $VERSION = '1.2.2';
|
||||||
our @ISA = qw(Lemonldap::NG::Portal::AuthNull);
|
our @ISA = qw(Lemonldap::NG::Portal::AuthNull);
|
||||||
|
|
||||||
|
*authenticate = *extractFormInfo;
|
||||||
|
|
||||||
## @apmethod int authInit()
|
## @apmethod int authInit()
|
||||||
# Check if SSL environment variables are set.
|
# Check if SSL environment variables are set.
|
||||||
# @return Lemonldap::NG::Portal constant
|
# @return Lemonldap::NG::Portal constant
|
||||||
|
|
|
@ -1931,6 +1931,7 @@ sub existingSession {
|
||||||
#@return Lemonldap::NG::Portal constant
|
#@return Lemonldap::NG::Portal constant
|
||||||
sub extractFormInfo {
|
sub extractFormInfo {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
return PE_OK if $self->{skipExtractFormInfo};
|
||||||
$self->{checkLogins} = $self->param('checkLogins');
|
$self->{checkLogins} = $self->param('checkLogins');
|
||||||
return $self->SUPER::extractFormInfo;
|
return $self->SUPER::extractFormInfo;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ package Lemonldap::NG::Portal::_Multi;
|
||||||
|
|
||||||
use Lemonldap::NG::Portal::Simple;
|
use Lemonldap::NG::Portal::Simple;
|
||||||
|
|
||||||
our $VERSION = '1.0.6';
|
our $VERSION = '1.2.2';
|
||||||
|
|
||||||
## @cmethod Lemonldap::NG::Portal::_Multi new(Lemonldap::NG::Portal::Simple portal)
|
## @cmethod Lemonldap::NG::Portal::_Multi new(Lemonldap::NG::Portal::Simple portal)
|
||||||
# Constructor
|
# Constructor
|
||||||
|
@ -71,7 +71,8 @@ sub try {
|
||||||
if ( $ci = $self->{p}->safe->reval( $self->{stack}->[$type]->[0]->{c} ) ) {
|
if ( $ci = $self->{p}->safe->reval( $self->{stack}->[$type]->[0]->{c} ) ) {
|
||||||
|
|
||||||
# Log used module
|
# Log used module
|
||||||
$self->{p}->lmLog( "Multi (type $type): trying module $old", 'debug' );
|
$self->{p}
|
||||||
|
->lmLog( "Multi (type $type): trying $sub for module $old", 'debug' );
|
||||||
|
|
||||||
# Run subroutine
|
# Run subroutine
|
||||||
$res = $self->{p}->$s();
|
$res = $self->{p}->$s();
|
||||||
|
@ -104,6 +105,7 @@ sub try {
|
||||||
# return true if an other module is available
|
# return true if an other module is available
|
||||||
sub next {
|
sub next {
|
||||||
my ( $self, $type ) = splice @_;
|
my ( $self, $type ) = splice @_;
|
||||||
|
|
||||||
if ( $self->{stack}->[$type]->[0]->{n} eq
|
if ( $self->{stack}->[$type]->[0]->{n} eq
|
||||||
$self->{stack}->[ 1 - $type ]->[0]->{n}
|
$self->{stack}->[ 1 - $type ]->[0]->{n}
|
||||||
and $self->{stack}->[ 1 - $type ]->[1] )
|
and $self->{stack}->[ 1 - $type ]->[1] )
|
||||||
|
@ -126,9 +128,11 @@ sub next {
|
||||||
sub replay {
|
sub replay {
|
||||||
my ( $self, $sub ) = splice @_;
|
my ( $self, $sub ) = splice @_;
|
||||||
my @subs = ();
|
my @subs = ();
|
||||||
|
$self->{p}->lmLog( "Replay all methods until sub $sub", 'debug' );
|
||||||
|
|
||||||
foreach (
|
foreach (
|
||||||
qw(authInit extractFormInfo userDBInit getUser setAuthSessionInfo
|
qw(authInit extractFormInfo userDBInit getUser setAuthSessionInfo
|
||||||
setSessionInfo setGroups authFinish)
|
setSessionInfo setGroups authenticate authFinish)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
push @subs, $_;
|
push @subs, $_;
|
||||||
|
|
|
@ -11,7 +11,7 @@ use Lemonldap::NG::Portal::_LibAccess;
|
||||||
require SOAP::Lite;
|
require SOAP::Lite;
|
||||||
use base qw(Lemonldap::NG::Portal::_LibAccess);
|
use base qw(Lemonldap::NG::Portal::_LibAccess);
|
||||||
|
|
||||||
our $VERSION = '1.2.0';
|
our $VERSION = '1.2.2';
|
||||||
|
|
||||||
## @method void startSoapServices()
|
## @method void startSoapServices()
|
||||||
# Check the URI requested (PATH_INFO environment variable) and launch the
|
# Check the URI requested (PATH_INFO environment variable) and launch the
|
||||||
|
@ -76,21 +76,32 @@ _RETURN $getCookiesResponse Response
|
||||||
#@return session => { error => code , cookies => { cookieName1 => value ,... } }
|
#@return session => { error => code , cookies => { cookieName1 => value ,... } }
|
||||||
sub getCookies {
|
sub getCookies {
|
||||||
my ( $self, $user, $password, $sessionid ) = splice @_;
|
my ( $self, $user, $password, $sessionid ) = splice @_;
|
||||||
|
|
||||||
$self->{user} = $user;
|
$self->{user} = $user;
|
||||||
$self->{password} = $password;
|
$self->{password} = $password;
|
||||||
$self->{id} = $sessionid if ( defined($sessionid) && $sessionid );
|
$self->{id} = $sessionid if ( defined($sessionid) && $sessionid );
|
||||||
$self->{error} = PE_OK;
|
$self->{error} = PE_OK;
|
||||||
$self->lmLog( "SOAP authentication request for $self->{user}", 'debug' );
|
$self->lmLog( "SOAP authentication request for $user", 'debug' );
|
||||||
|
|
||||||
|
# Skip extractFormInfo step, as we already get input data
|
||||||
|
$self->{skipExtractFormInfo} = 1;
|
||||||
|
|
||||||
|
# User and password are required
|
||||||
unless ( $self->{user} && $self->{password} ) {
|
unless ( $self->{user} && $self->{password} ) {
|
||||||
$self->{error} = PE_FORMEMPTY;
|
$self->{error} = PE_FORMEMPTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Launch process
|
||||||
else {
|
else {
|
||||||
$self->{error} = $self->_subProcess(
|
$self->{error} = $self->_subProcess(
|
||||||
qw(authInit userDBInit getUser setAuthSessionInfo
|
qw(authInit userDBInit extractFormInfo getUser setAuthSessionInfo
|
||||||
setSessionInfo setMacros setGroups setPersistentSessionInfo
|
setSessionInfo setMacros setGroups setPersistentSessionInfo
|
||||||
setLocalGroups authenticate grantSession removeOther
|
setLocalGroups authenticate grantSession removeOther
|
||||||
store authFinish buildCookie)
|
store authFinish buildCookie)
|
||||||
);
|
);
|
||||||
|
$self->lmLog(
|
||||||
|
"SOAP authentication result for $user: code $self->{error}",
|
||||||
|
'debug' );
|
||||||
$self->updateSession();
|
$self->updateSession();
|
||||||
}
|
}
|
||||||
my @tmp = ();
|
my @tmp = ();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user