summaryrefslogtreecommitdiffstats
path: root/inc/configmodule/ldapauth.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2015-09-12 17:58:08 +0200
committerSimon Rettberg2015-09-12 17:58:08 +0200
commit3bddad0ec251a75e6554e8a9b986ff7e2b234ec7 (patch)
tree570aeacf7cbabe11ea8db0ea51ec24ef57ff4a1e /inc/configmodule/ldapauth.inc.php
parentImage delete feature (diff)
downloadslx-admin-3bddad0ec251a75e6554e8a9b986ff7e2b234ec7.tar.gz
slx-admin-3bddad0ec251a75e6554e8a9b986ff7e2b234ec7.tar.xz
slx-admin-3bddad0ec251a75e6554e8a9b986ff7e2b234ec7.zip
[ldap] new module
Diffstat (limited to 'inc/configmodule/ldapauth.inc.php')
-rw-r--r--inc/configmodule/ldapauth.inc.php67
1 files changed, 67 insertions, 0 deletions
diff --git a/inc/configmodule/ldapauth.inc.php b/inc/configmodule/ldapauth.inc.php
new file mode 100644
index 00000000..c5a432e9
--- /dev/null
+++ b/inc/configmodule/ldapauth.inc.php
@@ -0,0 +1,67 @@
+<?php
+
+ConfigModule::registerModule(
+ 'LdapAuth', // ID
+ Dictionary::translate('config-module', 'ldapAuth_title'), // Title
+ Dictionary::translate('config-module', 'ldapAuth_description'), // Description
+ Dictionary::translate('config-module', 'group_authentication'), // Group
+ true // Only one per config?
+);
+
+class ConfigModule_LdapAuth extends ConfigModule
+{
+
+ const VERSION = 1;
+
+ private static $REQUIRED_FIELDS = array('server', 'searchbase');
+ private static $OPTIONAL_FIELDS = array('binddn', 'bindpw', 'home', 'ssl', 'fingerprint');
+
+ protected function generateInternal($tgz, $parent)
+ {
+ Trigger::ldadp($this->id(), $parent);
+ $config = $this->moduleData;
+ if (preg_match('/^([^\:]+)\:(\d+)$/', $config['server'], $out)) {
+ $config['server'] = $out[1];
+ $config['ldapport'] = $out[2];
+ }
+ $config['parentTask'] = $parent;
+ $config['failOnParentFail'] = false;
+ $config['proxyip'] = Property::getServerIp();
+ $config['proxyport'] = 3100 + $this->id();
+ $config['filename'] = $tgz;
+ $config['moduleid'] = $this->id();
+ $config['plainldap'] = true;
+ return Taskmanager::submit('CreateLdapConfig', $config);
+ }
+
+ protected function moduleVersion()
+ {
+ return self::VERSION;
+ }
+
+ protected function validateConfig()
+ {
+ // Check if required fields are filled
+ return Util::hasAllKeys($this->moduleData, self::$REQUIRED_FIELDS);
+ }
+
+ public function setData($key, $value)
+ {
+ if (!in_array($key, self::$REQUIRED_FIELDS) && !in_array($key, self::$OPTIONAL_FIELDS))
+ return false;
+ $this->moduleData[$key] = $value;
+ return true;
+ }
+
+ // ############## Callbacks #############################
+
+ /**
+ * Server IP changed - rebuild all LDAP modules.
+ */
+ public function event_serverIpChanged()
+ {
+ error_log('Calling generate on ' . $this->title());
+ $this->generate(false);
+ }
+
+}