From 7d3c8d4263d48bd16be068d3b134f70451afac94 Mon Sep 17 00:00:00 2001 From: Gabriel Birke Date: Sun, 17 Aug 2008 16:11:21 +0200 Subject: Wrap user modifications in events Adds a wrapper function in the basic auth class which is used by the core code to modify the user database. The wrapper function signals events and delegates the action to the auth backend. darcs-hash:20080817141121-79ce3-3300a4342b62a7a18ebcc9a765d87b30a0264621.gz --- inc/auth/basic.class.php | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'inc/auth') diff --git a/inc/auth/basic.class.php b/inc/auth/basic.class.php index c3bb9d32e..c93e3d5c5 100644 --- a/inc/auth/basic.class.php +++ b/inc/auth/basic.class.php @@ -89,6 +89,38 @@ class auth_basic { } } + /** + * Trigger the AUTH_USERDATA_CHANGE event and call the modification function. [ DO NOT OVERRIDE ] + * + * You should use this function instead of calling createUser, modifyUser or + * deleteUsers directly. The event handlers can prevent the modification, for + * example for enforcing a user name schema. + * + * @author Gabriel Birke + * @param string $type Modification type ('create', 'modify', 'delete') + * @param array $params Parameters for the createUser, modifyUser or deleteUsers method. The content of this array depends on the modification type + * @return mixed Result from the modification function or false if an event handler has canceled the action + */ + function triggerUserMod($type, $params) + { + $validTypes = array( + 'create' => 'createUser', + 'modify' => 'modifyUser', + 'delete' => 'deleteUsers' + ); + if(empty($validTypes[$type])) + return false; + $eventdata = array('type' => $type, 'params' => $params, 'modification_result' => null); + $evt = new Doku_Event('AUTH_USER_CHANGE', $eventdata); + if ($evt->advise_before(true)) { + $result = call_user_func_array(array($this, $validTypes[$type]), $params); + $evt->data['modification_result'] = $result; + } + $evt->advise_after(); + unset($evt); + return $result; + } + /** * Log off the current user [ OPTIONAL ] * @@ -290,6 +322,7 @@ class auth_basic { return array(); } + /** * Check Session Cache validity [implement only where required/possible] * -- cgit v1.2.3