1<?php
2/**
3 * DokuWiki Plugin Authdomain Limitation (Action Component)
4 *
5 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
6 * @author  basteyyy <sebastian@34n.de>
7 */
8
9// must be run within Dokuwiki
10if(!defined('DOKU_INC')) die();
11
12class action_plugin_authdomainlimitation_signup extends DokuWiki_Action_Plugin {
13
14    /**
15     * Registers a callback function for a given event
16     *
17     * @param Doku_Event_Handler $controller DokuWiki's event controller object
18     * @return void
19     */
20    public function register(Doku_Event_Handler $controller) {
21
22       $controller->register_hook('AUTH_USER_CHANGE', 'BEFORE', $this, 'handle_auth_user_change');
23
24    }
25
26    /**
27     * [Custom event handler which performs action]
28     *
29     * @param Doku_Event $event  event object by reference
30     * @param mixed      $param  [the parameters passed as fifth argument to register_hook() when this
31     *                           handler was registered]
32     * @return void
33     */
34
35    public function handle_auth_user_change(Doku_Event &$event, $param) {
36
37      if ( $event->data['type'] !== 'create' ) {
38        return true;
39      }
40
41      $domains = array_map(function($domain){
42        return trim($domain);
43      }, explode(';', $this->getConf('_domainWhiteList')));
44
45      if ( in_array(trim( substr(strrchr($event->data['params'][3], "@"), 1)),$domains) ) {
46        return true;
47      }
48
49      $event->preventDefault();
50      $event->stopPropagation();
51      $event->result = false;
52
53      msg($this->getConf('_domainlistErrorMEssage'), -1);
54      return false;
55    }
56
57}
58
59// vim:ts=4:sw=4:et:
60