lemonldap-ng/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Plugins.pm

93 lines
3.1 KiB
Perl
Raw Normal View History

2016-03-29 23:09:55 +02:00
# This module loads known enabled plugins. To add custom modules, just add them
# into "plugins" list in lemonldap-ng.ini, section "portal"
package Lemonldap::NG::Portal::Main::Plugins;
2019-09-30 21:50:32 +02:00
our $VERSION = '2.0.7';
2016-03-29 23:09:55 +02:00
2016-04-07 23:31:56 +02:00
package Lemonldap::NG::Portal::Main;
use strict;
2017-02-04 08:55:44 +01:00
use Mouse;
# Plugins enabled by a simple boolean value (ordered list)
#
2018-08-29 13:16:15 +02:00
# Developers: 2FA must be loaded before Notifications
# Developers: GlobalLogout must be the last loaded plugin
2017-02-04 08:55:44 +01:00
our @pList = (
portalDisplayResetPassword => '::Plugins::MailPasswordReset',
2018-08-02 22:00:41 +02:00
portalStatus => '::Plugins::Status',
cda => '::Plugins::CDA',
notification => '::Plugins::Notifications',
portalCheckLogins => '::Plugins::History',
stayConnected => '::Plugins::StayConnected',
bruteForceProtection => '::Plugins::BruteForceProtection',
2018-10-01 15:20:41 +02:00
grantSessionRules => '::Plugins::GrantSession',
2018-08-02 22:00:41 +02:00
upgradeSession => '::Plugins::Upgrade',
autoSigninRules => '::Plugins::AutoSignin',
checkState => '::Plugins::CheckState',
2018-10-04 18:41:03 +02:00
portalForceAuthn => '::Plugins::ForceAuthn',
checkUser => '::Plugins::CheckUser',
impersonationRule => '::Plugins::Impersonation',
2019-06-21 14:49:38 +02:00
contextSwitchingRule => '::Plugins::ContextSwitching',
decryptValueRule => '::Plugins::DecryptValue',
2019-11-20 23:19:11 +01:00
globalLogoutRule => '::Plugins::GlobalLogout',
refreshSessions => '::Plugins::Refresh',
2017-02-04 08:55:44 +01:00
);
2016-04-07 23:31:56 +02:00
2016-03-29 23:09:55 +02:00
##@method list enabledPlugins
#
#@return list of enabled plugins
sub enabledPlugins {
my ($self) = @_;
2017-02-17 08:40:18 +01:00
my $conf = $self->conf;
2016-03-29 23:09:55 +02:00
my @res;
2016-06-12 18:52:37 +02:00
# Search for Issuer* modules enabled
2016-06-10 13:03:13 +02:00
foreach my $key (qw(SAML OpenID CAS OpenIDConnect Get)) {
2017-02-17 08:40:18 +01:00
if ( $conf->{"issuerDB${key}Activation"} ) {
2017-02-15 07:41:50 +01:00
$self->logger->debug("Issuer${key} enabled");
2016-06-12 18:52:37 +02:00
push @res, "::Issuer::$key";
2016-03-29 23:09:55 +02:00
}
}
2017-02-04 08:55:44 +01:00
# Load static plugin list
for ( my $i = 0 ; $i < @pList ; $i += 2 ) {
2017-02-17 08:40:18 +01:00
push @res, $pList[ $i + 1 ] if ( $conf->{ $pList[$i] } );
2017-02-04 08:55:44 +01:00
}
2017-01-29 10:11:27 +01:00
2017-02-17 08:40:18 +01:00
# Load single session
push @res, '::Plugins::SingleSession'
if ( $conf->{singleSession}
or $conf->{singleIP}
or $conf->{singleUserByIP}
or $conf->{notifyOther} );
2016-03-29 23:09:55 +02:00
# Check if SOAP is enabled
push @res, '::Plugins::SOAPServer'
2017-02-17 08:40:18 +01:00
if ( $conf->{soapSessionServer}
or $conf->{soapConfigServer} );
2017-01-07 21:37:07 +01:00
2017-01-09 07:11:28 +01:00
# Add REST (check is done by it)
push @res, '::Plugins::RESTServer';
2016-03-29 23:09:55 +02:00
2017-02-17 08:40:18 +01:00
if ( my $p = $conf->{passwordDB} ) {
2016-07-07 23:55:23 +02:00
push @res, "::Password::$p" if ( $p ne 'Null' );
}
2016-03-31 22:08:43 +02:00
2017-02-04 08:55:44 +01:00
# Check if register is enabled
push @res, '::Plugins::Register'
2017-02-17 08:40:18 +01:00
if ( $conf->{registerDB} and $conf->{registerDB} ne 'Null' );
push @res, '::Plugins::CertificateResetByMail'
2020-02-20 23:34:02 +01:00
if ( $conf->{portalDisplayCertificateResetByMail} );
2017-02-02 22:48:32 +01:00
2016-03-29 23:09:55 +02:00
# Check if custom plugins are required
2017-01-29 10:11:27 +01:00
# TODO: change this name
2017-02-17 08:40:18 +01:00
if ( $conf->{customPlugins} ) {
$self->logger->debug( 'Custom plugins: ' . $conf->{customPlugins} );
2018-08-29 13:25:46 +02:00
push @res, grep ( /\w+/, split( /,\s*/, $conf->{customPlugins} ) );
2016-03-29 23:09:55 +02:00
}
2016-04-03 18:51:23 +02:00
return @res;
2016-03-29 23:09:55 +02:00
}
1;