From 2046a6546c8ed62b9a7b33305b6201458f2f8291 Mon Sep 17 00:00:00 2001 From: Christopher Smith Date: Wed, 12 Mar 2014 15:38:28 +0000 Subject: Allow user info to be retrieved without groups Some parts of dokuwiki (e.g. recent changes, old revisions) can requests lots of user info (to provide editor names) without requiring any group information. This change also implements caching of user info by authmysql & authpgsql plugins to avoid repeated querying of the DB to retrieve the same user information. --- lib/plugins/auth.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'lib/plugins/auth.php') diff --git a/lib/plugins/auth.php b/lib/plugins/auth.php index b04735639..f9e5cded9 100644 --- a/lib/plugins/auth.php +++ b/lib/plugins/auth.php @@ -15,6 +15,9 @@ if(!defined('DOKU_INC')) die(); class DokuWiki_Auth_Plugin extends DokuWiki_Plugin { public $success = true; + const IGNORE_GROUPS = false; + const REQUIRE_GROUPS = true; + /** * Possible things an auth backend module may be able to * do. The things a backend can do need to be set to true @@ -234,9 +237,10 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin { * * @author Andreas Gohr * @param string $user the user name + * @param bool $requireGroups whether or not the returned data must include groups * @return array containing user data or false */ - public function getUserData($user) { + public function getUserData($user, $requireGroups=true) { if(!$this->cando['external']) msg("no valid authorisation system in use", -1); return false; } -- cgit v1.2.3 From 06e3e0c7b506a637df1ea27c6a8a439756e7139d Mon Sep 17 00:00:00 2001 From: Christopher Smith Date: Fri, 14 Mar 2014 17:58:53 +0000 Subject: use $requireGroups constants in auth classes; comments; code improvements --- lib/plugins/auth.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/plugins/auth.php') diff --git a/lib/plugins/auth.php b/lib/plugins/auth.php index f9e5cded9..9275611be 100644 --- a/lib/plugins/auth.php +++ b/lib/plugins/auth.php @@ -232,7 +232,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin { * at least these fields: * * name string full name of the user - * mail string email addres of the user + * mail string email address of the user * grps array list of groups the user is in * * @author Andreas Gohr @@ -240,7 +240,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin { * @param bool $requireGroups whether or not the returned data must include groups * @return array containing user data or false */ - public function getUserData($user, $requireGroups=true) { + public function getUserData($user, $requireGroups=self::REQUIRE_GROUPS) { if(!$this->cando['external']) msg("no valid authorisation system in use", -1); return false; } -- cgit v1.2.3 From 2dc9e90007f12ac996b0e74479137a9dc6243c3c Mon Sep 17 00:00:00 2001 From: Christopher Smith Date: Sun, 4 May 2014 19:20:11 +0100 Subject: KISS - remove class constants for REQUIRE_GROUPS & IGNORE_GROUPS and replace with boolean values --- lib/plugins/auth.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'lib/plugins/auth.php') diff --git a/lib/plugins/auth.php b/lib/plugins/auth.php index 9275611be..b38b591a3 100644 --- a/lib/plugins/auth.php +++ b/lib/plugins/auth.php @@ -15,9 +15,6 @@ if(!defined('DOKU_INC')) die(); class DokuWiki_Auth_Plugin extends DokuWiki_Plugin { public $success = true; - const IGNORE_GROUPS = false; - const REQUIRE_GROUPS = true; - /** * Possible things an auth backend module may be able to * do. The things a backend can do need to be set to true @@ -240,7 +237,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin { * @param bool $requireGroups whether or not the returned data must include groups * @return array containing user data or false */ - public function getUserData($user, $requireGroups=self::REQUIRE_GROUPS) { + public function getUserData($user, $requireGroups=true) { if(!$this->cando['external']) msg("no valid authorisation system in use", -1); return false; } -- cgit v1.2.3 From 59bc3b48fdffb76ee65a4b630be3ffa1f6c20c80 Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Mon, 29 Sep 2014 21:45:27 +0200 Subject: more scrutinizer issue improvements --- lib/plugins/auth.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'lib/plugins/auth.php') diff --git a/lib/plugins/auth.php b/lib/plugins/auth.php index b38b591a3..0d6ea2fa3 100644 --- a/lib/plugins/auth.php +++ b/lib/plugins/auth.php @@ -124,8 +124,11 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin { 'modify' => 'modifyUser', 'delete' => 'deleteUsers' ); - if(empty($validTypes[$type])) + if(empty($validTypes[$type])) { return false; + } + + $result = false; $eventdata = array('type' => $type, 'params' => $params, 'modification_result' => null); $evt = new Doku_Event('AUTH_USER_CHANGE', $eventdata); if($evt->advise_before(true)) { -- cgit v1.2.3 From 253d4b48ec708eb42033862dc15c8576f44a48ed Mon Sep 17 00:00:00 2001 From: Gerrit Uitslag Date: Wed, 1 Oct 2014 15:32:05 +0200 Subject: more PHPDocs, unused var, small bit code reformatting --- lib/plugins/auth.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/plugins/auth.php') diff --git a/lib/plugins/auth.php b/lib/plugins/auth.php index 0d6ea2fa3..021bc5d4b 100644 --- a/lib/plugins/auth.php +++ b/lib/plugins/auth.php @@ -116,7 +116,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin { * @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 + * @return bool|null|int Result from the modification function or false if an event handler has canceled the action */ public function triggerUserMod($type, $params) { $validTypes = array( @@ -238,7 +238,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin { * @author Andreas Gohr * @param string $user the user name * @param bool $requireGroups whether or not the returned data must include groups - * @return array containing user data or false + * @return false|array containing user data or false */ public function getUserData($user, $requireGroups=true) { if(!$this->cando['external']) msg("no valid authorisation system in use", -1); -- cgit v1.2.3 From 9c03f73b0f57a7e1bf6a3108813a4004bf66d307 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Koutn=C3=BD?= Date: Mon, 13 Oct 2014 02:12:55 +0200 Subject: AUTH_USER_CHANGE handler can modify passed data Originally AUTH_USER_CHANGE handler could modify the user data, however, auth plugin consequently worked with different copy of the array thus effectively preventing any changes by the AUTH_USER_CHANGE implementer. --- lib/plugins/auth.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/plugins/auth.php') diff --git a/lib/plugins/auth.php b/lib/plugins/auth.php index b38b591a3..02e0613dd 100644 --- a/lib/plugins/auth.php +++ b/lib/plugins/auth.php @@ -129,7 +129,7 @@ class DokuWiki_Auth_Plugin extends DokuWiki_Plugin { $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); + $result = call_user_func_array(array($this, $validTypes[$type]), $evt->data['params']); $evt->data['modification_result'] = $result; } $evt->advise_after(); -- cgit v1.2.3