lib/Auth.php

Aleksander Machniak machniak at kolabsys.com
Mon Aug 6 20:07:27 CEST 2012


 lib/Auth.php |  157 ++++++++++++++++++++++++-----------------------------------
 1 file changed, 66 insertions(+), 91 deletions(-)

New commits:
commit 8d78b0cc783c273b37a2506d5bacb1470511ec66
Author: Aleksander Machniak <machniak at kolabsys.com>
Date:   Mon Aug 6 20:06:53 2012 +0200

    Fix possible fatal errors when Auth object doesn't exist (#940)

diff --git a/lib/Auth.php b/lib/Auth.php
index d6f647e..549e046 100644
--- a/lib/Auth.php
+++ b/lib/Auth.php
@@ -195,169 +195,151 @@ class Auth {
         }
     }
 
+    /**
+     * Return Auth instance for specified domain
+     */
+    private function auth_instance($domain = null)
+    {
+        if (empty($domain)) {
+            if (!empty($_SESSION['user'])) {
+                //console("Using domain from session");
+                $domain = $_SESSION['user']->get_domain();
+            } else {
+                //console("Using primary_domain");
+                $domain = $this->conf->get('primary_domain');
+            }
+        }
+
+        if (!isset($this->_auth[$domain])) {
+            $this->connect($domain);        
+        }
+
+        return $this->_auth[$domain];
+    }
+
     // TODO: Dummy function to be removed
     public function attr_details($attribute)
     {
-        $conf = Conf::get_instance();
-        return $this->_auth[$conf->get('kolab', 'primary_domain')]->attribute_details((array)($attribute));
+        $conf   = Conf::get_instance();
+        $domain = $conf->get('kolab', 'primary_domain');
+        
+        return $this->auth_instance($domain)->attribute_details((array)$attribute);
     }
 
     // TODO: Dummy function to be removed
     public function attrs_allowed($objectclasses = array())
     {
-        $conf = Conf::get_instance();
-        return $this->_auth[$conf->get('kolab', 'primary_domain')]->allowed_attributes($objectclasses);
+        $conf   = Conf::get_instance();
+        $domain = $conf->get('kolab', 'primary_domain');
+
+        return $this->auth_instance($domain)->allowed_attributes($objectclasses);
     }
 
     public function allowed_attributes($objectclasses = array())
     {
-        if (!is_array($objectclasses)) {
-            $objectclasses = (array)($objectclasses);
-        }
-
-        return $this->_auth[$_SESSION['user']->get_domain()]->allowed_attributes($objectclasses);
+        return $this->auth_instance()->allowed_attributes((array)$objectclasses);
     }
 
     public function attribute_details($attributes = array())
     {
-        if (!is_array($attributes)) {
-            $attributes = (array)($attributes);
-        }
-
-        return $this->_auth[$_SESSION['user']->get_domain()]->attribute_details($attributes);
+        return $this->auth_instance()->attribute_details((array)$attributes);
     }
 
     public function domain_add($domain, $parent_domain=null)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->domain_add($domain, $parent_domain);
+        return $this->auth_instance()->domain_add($domain, $parent_domain);
     }
 
     public function domain_edit($domain, $attributes, $typeid = null)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->domain_edit($domain, $attributes, $typeid);
+        return $this->auth_instance()->domain_edit($domain, $attributes, $typeid);
     }
 
     public function domain_find_by_attribute($attribute)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->domain_find_by_attribute($attribute);
+        return $this->auth_instance()->domain_find_by_attribute($attribute);
     }
 
     public function domain_info($domaindata)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->domain_info($domaindata);
+        return $this->auth_instance()->domain_info($domaindata);
     }
 
     public function find_user_groups($member_dn)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->find_user_groups($member_dn);
+        return $this->auth_instance()->find_user_groups($member_dn);
     }
 
     public function get_attribute($subject, $attribute)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->get_attribute($subject, $attribute);
+        return $this->auth_instance()->get_attribute($subject, $attribute);
     }
 
     public function get_attributes($subject, $attributes)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->get_attributes($subject, $attributes);
+        return $this->auth_instance()->get_attributes($subject, $attributes);
     }
 
     public function group_add($attributes, $typeid = null)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->group_add($attributes, $typeid);
+        return $this->auth_instance()->group_add($attributes, $typeid);
     }
 
     public function group_edit($group, $attributes, $typeid = null)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->group_edit($group, $attributes, $typeid);
+        return $this->auth_instance()->group_edit($group, $attributes, $typeid);
     }
 
     public function group_delete($subject)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->group_delete($subject);
+        return $this->auth_instance()->group_delete($subject);
     }
 
     public function group_find_by_attribute($attribute)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->group_find_by_attribute($attribute);
+        return $this->auth_instance()->group_find_by_attribute($attribute);
     }
 
     public function group_info($groupdata)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->group_info($groupdata);
+        return $this->auth_instance()->group_info($groupdata);
     }
 
     public function group_members_list($groupdata, $recurse = true)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->group_members_list($groupdata, $recurse);
+        return $this->auth_instance()->group_members_list($groupdata, $recurse);
     }
 
     public function list_domains()
     {
         // TODO: Consider a normal user does not have privileges on
         // the base_dn where domain names and configuration is stored.
-        return $this->_auth[$this->domain]->list_domains();
+        return $this->auth_instance($this->domain)->list_domains();
     }
 
     public function list_rights($subject)
     {
-        return $this->_auth[$this->domain]->effective_rights($subject);
+        return $this->auth_instance($this->domain)->effective_rights($subject);
     }
 
     public function list_users($domain = NULL, $attributes = array(), $search = array(), $params = array())
     {
-        if (empty($domain)) {
-            $domain = $_SESSION['user']->get_domain();
-        }
-
-        $this->connect($domain);
-
-        if ($domain === NULL) {
-            $domain = $this->conf->get('primary_domain');
-        }
-
-        $users = $this->_auth[$domain]->list_users($attributes, $search, $params);
-
-        return $users;
+        return $this->auth_instance()->list_users($attributes, $search, $params);
     }
 
     public function list_groups($domain = NULL, $attributes = array(), $search = array(), $params = array())
     {
-        $this->connect($domain);
-        if ($domain === NULL) {
-            $domain = $this->conf->get('primary_domain');
-        }
-
-        $groups = $this->_auth[$domain]->list_groups($attributes, $search, $params);
-
-        return $groups;
+        return $this->auth_instance($domain)->list_groups($attributes, $search, $params);
     }
 
     public function list_resources($domain = NULL, $attributes = array(), $search = array(), $params = array())
     {
-        if ($domain === NULL) {
-            $domain = $this->conf->get('primary_domain');
-        }
-
-        $this->connect($domain);
-
-        $resources = $this->_auth[$domain]->list_resources($attributes, $search, $params);
-
-        return $resources;
+        return $this->auth_instance($domain)->list_resources($attributes, $search, $params);
     }
 
-
     public function list_roles($domain = NULL, $attributes = array(), $search = array(), $params = array())
     {
-        if ($domain === NULL) {
-            $domain = $this->conf->get('primary_domain');
-        }
-
-        $this->connect($domain);
-
-        $roles = $this->_auth[$domain]->list_roles($attributes, $search, $params);
-
-        return $roles;
+        return $this->auth_instance($domain)->list_roles($attributes, $search, $params);
     }
 
     public function primary_for_valid_domain($domain)
@@ -384,83 +366,76 @@ class Auth {
 
     public function resource_add($attributes, $typeid = null)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->resource_add($attributes, $typeid);
+        return $this->auth_instance()->resource_add($attributes, $typeid);
     }
 
     public function resource_edit($resource, $attributes, $typeid = null)
     {
-        //console("Domain: " . $_SESSION['user']->get_domain());
-
-        return $this->_auth[$_SESSION['user']->get_domain()]->resource_edit($resource, $attributes, $typeid);
+        return $this->auth_instance()->resource_edit($resource, $attributes, $typeid);
     }
 
     public function resource_delete($subject)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->resource_delete($subject);
+        return $this->auth_instance()->resource_delete($subject);
     }
 
     public function resource_find_by_attribute($attribute)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->resource_find_by_attribute($attribute);
+        return $this->auth_instance()->resource_find_by_attribute($attribute);
     }
 
     public function resource_info($resourcedata)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->resource_info($resourcedata);
+        return $this->auth_instance()->resource_info($resourcedata);
     }
 
     public function resource_members_list($resourcedata, $recurse = true)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->resource_members_list($resourcedata, $recurse);
+        return $this->auth_instance()->resource_members_list($resourcedata, $recurse);
     }
 
     public function role_add($role)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->role_add($role);
+        return $this->auth_instance()->role_add($role);
     }
 
     public function role_find_by_attribute($attribute)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->role_find_by_attribute($attribute);
+        return $this->auth_instance()->role_find_by_attribute($attribute);
     }
 
     public function role_info($roledata)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->role_info($roledata);
+        return $this->auth_instance()->role_info($roledata);
     }
 
     public function search()
     {
-        $this->connect();
-
-        $result = $this->_auth[$_SESSION['user']->get_domain()]->search(func_get_args());
-
-        return $result;
+        return $this->auth_instance()->search(func_get_args());
     }
 
     public function user_add($attributes, $typeid = null)
     {
-        $this->connect($_SESSION['user']->get_domain());
-        return $this->_auth[$_SESSION['user']->get_domain()]->user_add($attributes, $typeid);
+        return $this->auth_instance()->user_add($attributes, $typeid);
     }
 
     public function user_edit($user, $attributes, $typeid = null)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->user_edit($user, $attributes, $typeid);
+        return $this->auth_instance()->user_edit($user, $attributes, $typeid);
     }
 
     public function user_delete($userdata)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->user_delete($userdata);
+        return $this->auth_instance()->user_delete($userdata);
     }
 
     public function user_find_by_attribute($attribute)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->user_find_by_attribute($attribute);
+        return $this->auth_instance()->user_find_by_attribute($attribute);
     }
 
     public function user_info($userdata)
     {
-        return $this->_auth[$_SESSION['user']->get_domain()]->user_info($userdata);
+        return $this->auth_instance()->user_info($userdata);
     }
 }





More information about the commits mailing list