Add CAS server resolution rules (#2753)
This commit is contained in:
parent
3428cb981f
commit
5e210651aa
|
@ -133,14 +133,24 @@ sub extractFormInfo {
|
|||
|
||||
else {
|
||||
|
||||
# Server list
|
||||
my $portalPath = $self->conf->{portal};
|
||||
$portalPath =~ s#^https?://[^/]+/?#/#;
|
||||
# Try to use server resolution ruls
|
||||
foreach ( keys %{ $self->srvRules } ) {
|
||||
my $cond = $self->srvRules->{$_} or next;
|
||||
if ( $cond->( $req, $req->sessionInfo ) ) {
|
||||
$self->logger->debug(
|
||||
"CAS Server $_ selected from resolution rule");
|
||||
$srv = $_;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
$req->data->{list} = $self->srvList;
|
||||
unless ($srv) {
|
||||
|
||||
$req->data->{login} = 1;
|
||||
return PE_IDPCHOICE;
|
||||
# Server list
|
||||
$req->data->{list} = $self->srvList;
|
||||
$req->data->{login} = 1;
|
||||
return PE_IDPCHOICE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@ has ua => (
|
|||
|
||||
has casSrvList => ( is => 'rw', default => sub { {} }, );
|
||||
has casAppList => ( is => 'rw', default => sub { {} }, );
|
||||
has srvRules => ( is => 'rw', default => sub { {} }, );
|
||||
has spRules => ( is => 'rw', default => sub { {} }, );
|
||||
has spMacros => ( is => 'rw', default => sub { {} }, );
|
||||
|
||||
|
@ -41,6 +42,18 @@ sub loadSrv {
|
|||
return 0;
|
||||
}
|
||||
$self->casSrvList( $self->conf->{casSrvMetaDataOptions} );
|
||||
|
||||
# Set rule
|
||||
foreach ( keys %{ $self->conf->{casSrvMetaDataOptions} } ) {
|
||||
my $cond = $self->conf->{casSrvMetaDataOptions}->{$_}
|
||||
->{casSrvMetaDataOptionsResolutionRule};
|
||||
if ( length $cond ) {
|
||||
my $rule_sub = $self->p->buildRule( $cond, "CAS server resolution" );
|
||||
if ($rule_sub) {
|
||||
$self->srvRules->{$_} = $rule_sub;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue