diff options
Diffstat (limited to 'lib/plugins/authad')
-rw-r--r-- | lib/plugins/authad/action.php | 91 | ||||
-rw-r--r-- | lib/plugins/authad/auth.php | 25 | ||||
-rw-r--r-- | lib/plugins/authad/lang/de/lang.php | 8 | ||||
-rw-r--r-- | lib/plugins/authad/lang/en/lang.php | 10 | ||||
-rw-r--r-- | lib/plugins/authad/lang/es/lang.php | 8 | ||||
-rw-r--r-- | lib/plugins/authad/lang/es/settings.php | 2 | ||||
-rw-r--r-- | lib/plugins/authad/lang/hu/settings.php | 6 | ||||
-rw-r--r-- | lib/plugins/authad/lang/ko/lang.php | 10 | ||||
-rw-r--r-- | lib/plugins/authad/lang/nl/lang.php | 8 | ||||
-rw-r--r-- | lib/plugins/authad/lang/no/settings.php | 9 | ||||
-rw-r--r-- | lib/plugins/authad/lang/ru/lang.php | 8 | ||||
-rw-r--r-- | lib/plugins/authad/plugin.info.txt | 2 |
12 files changed, 183 insertions, 4 deletions
diff --git a/lib/plugins/authad/action.php b/lib/plugins/authad/action.php index e69de29bb..97be9897e 100644 --- a/lib/plugins/authad/action.php +++ b/lib/plugins/authad/action.php @@ -0,0 +1,91 @@ +<?php +/** + * DokuWiki Plugin addomain (Action Component) + * + * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html + * @author Andreas Gohr <gohr@cosmocode.de> + */ + +// must be run within Dokuwiki +if(!defined('DOKU_INC')) die(); + +/** + * Class action_plugin_addomain + */ +class action_plugin_authad extends DokuWiki_Action_Plugin { + + /** + * Registers a callback function for a given event + */ + public function register(Doku_Event_Handler &$controller) { + + $controller->register_hook('AUTH_LOGIN_CHECK', 'BEFORE', $this, 'handle_auth_login_check'); + $controller->register_hook('HTML_LOGINFORM_OUTPUT', 'BEFORE', $this, 'handle_html_loginform_output'); + + } + + /** + * Adds the selected domain as user postfix when attempting a login + * + * @param Doku_Event $event + * @param array $param + */ + public function handle_auth_login_check(Doku_Event &$event, $param) { + global $INPUT; + + /** @var auth_plugin_authad $auth */ + global $auth; + if(!is_a($auth, 'auth_plugin_authad')) return; // AD not even used + + if($INPUT->str('dom')) { + $usr = $auth->cleanUser($event->data['user']); + $dom = $auth->_userDomain($usr); + if(!$dom) { + $usr = "$usr@".$INPUT->str('dom'); + } + $INPUT->post->set('u', $usr); + $event->data['user'] = $usr; + } + } + + /** + * Shows a domain selection in the login form when more than one domain is configured + * + * @param Doku_Event $event + * @param array $param + */ + public function handle_html_loginform_output(Doku_Event &$event, $param) { + global $INPUT; + /** @var auth_plugin_authad $auth */ + global $auth; + if(!is_a($auth, 'auth_plugin_authad')) return; // AD not even used + $domains = $auth->_getConfiguredDomains(); + if(count($domains) <= 1) return; // no choice at all + + /** @var Doku_Form $form */ + $form =& $event->data; + + // any default? + $dom = ''; + if($INPUT->has('u')) { + $usr = $auth->cleanUser($INPUT->str('u')); + $dom = $auth->_userDomain($usr); + + // update user field value + if($dom) { + $usr = $auth->_userName($usr); + $pos = $form->findElementByAttribute('name', 'u'); + $ele =& $form->getElementAt($pos); + $ele['value'] = $usr; + } + } + + // add select box + $element = form_makeListboxField('dom', $domains, $dom, $this->getLang('domain'), '', 'block'); + $pos = $form->findElementByAttribute('name', 'p'); + $form->insertElement($pos + 1, $element); + } + +} + +// vim:ts=4:sw=4:et:
\ No newline at end of file diff --git a/lib/plugins/authad/auth.php b/lib/plugins/authad/auth.php index a0fec7b52..0860e5756 100644 --- a/lib/plugins/authad/auth.php +++ b/lib/plugins/authad/auth.php @@ -512,6 +512,31 @@ class auth_plugin_authad extends DokuWiki_Auth_Plugin { } /** + * Returns a list of configured domains + * + * The default domain has an empty string as key + * + * @return array associative array(key => domain) + */ + public function _getConfiguredDomains() { + $domains = array(); + if(empty($this->conf['account_suffix'])) return $domains; // not configured yet + + // add default domain, using the name from account suffix + $domains[''] = ltrim($this->conf['account_suffix'], '@'); + + // find additional domains + foreach($this->conf as $key => $val) { + if(is_array($val) && isset($val['account_suffix'])) { + $domains[$key] = ltrim($val['account_suffix'], '@'); + } + } + ksort($domains); + + return $domains; + } + + /** * Check provided user and userinfo for matching patterns * * The patterns are set up with $this->_constructPattern() diff --git a/lib/plugins/authad/lang/de/lang.php b/lib/plugins/authad/lang/de/lang.php new file mode 100644 index 000000000..eea511d1b --- /dev/null +++ b/lib/plugins/authad/lang/de/lang.php @@ -0,0 +1,8 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Andreas Gohr <gohr@cosmocode.de> + */ +$lang['domain'] = 'Anmelde-Domäne'; diff --git a/lib/plugins/authad/lang/en/lang.php b/lib/plugins/authad/lang/en/lang.php new file mode 100644 index 000000000..e2967d662 --- /dev/null +++ b/lib/plugins/authad/lang/en/lang.php @@ -0,0 +1,10 @@ +<?php +/** + * English language file for addomain plugin + * + * @author Andreas Gohr <gohr@cosmocode.de> + */ + +$lang['domain'] = 'Logon Domain'; + +//Setup VIM: ex: et ts=4 : diff --git a/lib/plugins/authad/lang/es/lang.php b/lib/plugins/authad/lang/es/lang.php new file mode 100644 index 000000000..c5b242cba --- /dev/null +++ b/lib/plugins/authad/lang/es/lang.php @@ -0,0 +1,8 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Juan De La Cruz <juann.dlc@gmail.com> + */ +$lang['domain'] = 'Dominio de inicio'; diff --git a/lib/plugins/authad/lang/es/settings.php b/lib/plugins/authad/lang/es/settings.php index 98b78056b..9dbd44be8 100644 --- a/lib/plugins/authad/lang/es/settings.php +++ b/lib/plugins/authad/lang/es/settings.php @@ -5,6 +5,7 @@ * * @author monica <may.dorado@gmail.com> * @author Antonio Bueno <atnbueno@gmail.com> + * @author Juan De La Cruz <juann.dlc@gmail.com> */ $lang['account_suffix'] = 'Su cuenta, sufijo. Ejem. <code> @ my.domain.org </ code>'; $lang['base_dn'] = 'Su base DN. Ejem. <code>DC=my,DC=dominio,DC=org</code>'; @@ -13,3 +14,4 @@ $lang['admin_username'] = 'Un usuario con privilegios de Active Directory $lang['admin_password'] = 'La contraseña del usuario anterior.'; $lang['sso'] = 'En caso de inicio de sesión usará ¿Kerberos o NTLM?'; $lang['sso_charset'] = 'La codificación con que tu servidor web pasará el nombre de usuario Kerberos o NTLM. Si es UTF-8 o latin-1 dejar en blanco. Requiere la extensión iconv.'; +$lang['debug'] = 'Mostrar información adicional de depuración sobre los errores?'; diff --git a/lib/plugins/authad/lang/hu/settings.php b/lib/plugins/authad/lang/hu/settings.php index 05acbdc2d..be0592d68 100644 --- a/lib/plugins/authad/lang/hu/settings.php +++ b/lib/plugins/authad/lang/hu/settings.php @@ -11,11 +11,11 @@ $lang['base_dn'] = 'Bázis DN, pl. <code>DC=my,DC=domain,DC=org</c $lang['domain_controllers'] = 'Tartománykezelők listája vesszővel elválasztva, pl. <code>srv1.domain.org,srv2.domain.org</code>.'; $lang['admin_username'] = 'Privilegizált AD felhasználó, aki az összes feéhasználó adatait elérheti. Elhagyható, de bizonyos funkciókhoz, például a feliratkozási e-mailek kiküldéséhez szükséges.'; $lang['admin_password'] = 'Ehhez tartozó jelszó.'; -$lang['sso'] = 'Single-Sign-On Kerberos-szal vagy NTML használata?'; +$lang['sso'] = 'Kerberos egyszeri bejelentkezés vagy NTLM használata?'; $lang['sso_charset'] = 'A webkiszolgáló karakterkészlete megfelel a Kerberos- és NTLM-felhasználóneveknek. Üres UTF-8 és Latin-1-hez. Szükséges az iconv bővítmény.'; $lang['real_primarygroup'] = 'A valódi elsődleges csoport feloldása a "Tartományfelhasználók" csoport használata helyett? (lassabb)'; $lang['use_ssl'] = 'SSL használata? Ha használjuk, tiltsuk le a TLS-t!'; $lang['use_tls'] = 'TLS használata? Ha használjuk, tiltsuk le az SSL-t!'; -$lang['debug'] = 'Debug-üzenetek megjelenítése?'; +$lang['debug'] = 'További hibakeresési üzenetek megjelenítése hiba esetén'; $lang['expirywarn'] = 'Felhasználók értesítése ennyi nappal a jelszavuk lejárata előtt. 0 a funkció kikapcsolásához.'; -$lang['additional'] = 'Vesszővel elválasztott lista a további AD attribútumok lekéréshez. Néhány plugin használhatja.'; +$lang['additional'] = 'Vesszővel elválasztott lista a további AD attribútumok lekéréséhez. Néhány bővítmény használhatja.'; diff --git a/lib/plugins/authad/lang/ko/lang.php b/lib/plugins/authad/lang/ko/lang.php new file mode 100644 index 000000000..1aa436708 --- /dev/null +++ b/lib/plugins/authad/lang/ko/lang.php @@ -0,0 +1,10 @@ +<?php +/** + * Korean language file for addomain plugin + * + * @author Myeongjin <aranet100@gmail.com> + */ + +$lang['domain'] = '로그온 도메인'; + +//Setup VIM: ex: et ts=4 : diff --git a/lib/plugins/authad/lang/nl/lang.php b/lib/plugins/authad/lang/nl/lang.php new file mode 100644 index 000000000..ea8419069 --- /dev/null +++ b/lib/plugins/authad/lang/nl/lang.php @@ -0,0 +1,8 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Rene <wllywlnt@yahoo.com> + */ +$lang['domain'] = 'Inlog Domein'; diff --git a/lib/plugins/authad/lang/no/settings.php b/lib/plugins/authad/lang/no/settings.php new file mode 100644 index 000000000..bab5ce67d --- /dev/null +++ b/lib/plugins/authad/lang/no/settings.php @@ -0,0 +1,9 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Christopher Schive <chschive@frisurf.no> + */ +$lang['admin_password'] = 'Passordet til brukeren over.'; +$lang['expirywarn'] = 'Antall dager på forhånd brukeren varsles om at passordet utgår. 0 for å deaktivere.'; diff --git a/lib/plugins/authad/lang/ru/lang.php b/lib/plugins/authad/lang/ru/lang.php new file mode 100644 index 000000000..6f3c03e39 --- /dev/null +++ b/lib/plugins/authad/lang/ru/lang.php @@ -0,0 +1,8 @@ +<?php + +/** + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * + * @author Aleksandr Selivanov <alexgearbox@yandex.ru> + */ +$lang['domain'] = 'Домен'; diff --git a/lib/plugins/authad/plugin.info.txt b/lib/plugins/authad/plugin.info.txt index 3af1ddfbe..8774fcf3c 100644 --- a/lib/plugins/authad/plugin.info.txt +++ b/lib/plugins/authad/plugin.info.txt @@ -1,7 +1,7 @@ base authad author Andreas Gohr email andi@splitbrain.org -date 2013-04-25 +date 2014-02-14 name Active Directory Auth Plugin desc Provides user authentication against a Microsoft Active Directory url http://www.dokuwiki.org/plugin:authad |