LiveUser_Admin pear.php.net User authentication and permission management framework LiveUser_Admin is meant to be used with the LiveUser package. It is composed of all the classes necessary to administrate data used by LiveUser. You'll be able to add/edit/delete/get things like: * Rights * Users * Groups * Areas * Applications * Subgroups * ImpliedRights And all other entities within LiveUser. At the moment we support the following storage containers: * PEAR::DB * PEAR::MDB * PEAR::MDB2 * PECL::PDO But it takes no time to write up your own storage container, so if you like to use native mysql functions straight, then it's possible to do so in under a hour! Markus Wolff mw21st mw21st@php.net yes Arnaud Limbourg arnaud arnaud@php.net yes Lukas Kahwe Smith lsmith smith@pooteeweet.org yes Helgi Þormar dufuz dufuz@php.net yes Matthias Nothhaft mahono mahono@php.net yes 2010-10-06 0.4.0 0.4.0 beta beta LGPL QA release Bug #13233 Example1 error when importing data in DB Bug #11051 Seems class variable is not declared Bug #8424 incorrect handling of single column joins 4.2.0 1.4.0b1 PEAR pear.php.net 1.3.1 LiveUser pear.php.net 0.16.12 Log pear.php.net 1.7.0 DB pear.php.net 1.6.0 MDB pear.php.net 1.1.4 MDB2 pear.php.net 2.1.0 XML_Tree pear.php.net Crypt_RC4 pear.php.net 0.14.0 0.14.0 beta beta 2004-12-11 LGPL - Refactored nto a separate package. 0.1.0 0.1.0 beta beta 2004-12-20 LGPL - refactored into a separate package from LiveUser - severe BC breaks in the permission API in order to unify the API - added ErrorStack - fixed outputRightsConstants() method - refactored storage layer to use an SQL query builder (DB and MDB support is currently missing but will be added in the next minor update) - sql query builder should output more portable SQL code - sql query builder enables full aliasing of all field names - sql query builder only joins the necessary tables so the admin API does not force the usage of any table (especially the translation table) - searchUser() now also fetches perm data - the complex container is currently not fully implemented 0.2.0 0.2.0 beta beta 2005-03-15 LGPL - perm container now also has a default init() method that is called in the factory - delete/update now dont require a filter in the id field - delete/update now return the number of affected rows - use LiveUser::cryptRC4() for rc4 handling - added support to be able to query for single values, columns and rows next to fetching multi dimensional arrays ('select' key in params array of get methods) - improved error handling in several places to not trigger on empty results - sequences are now named after the table they belong to - now requiring MDB2-2.0.0beta3 - if the "force-seq" option is now set to false in the storage config MDB2 will try to use autoincrement if supported by the RDBMS (you will need to add autoincrement to the id fields in the applications, areas, groups, rights, and perm_users tables yourself) - example 1 now outputs all queries using an MDB2 debug handler - Subgroups now work - ImplyRights now work - One can now remove groups recursively by passing recursive = true to removeGroup in Perm Complex container (before it was hardcoded to true, now defaults to false) - Tests for SubGroups and ImplyRights up and running - getGroup and getRight now work in Perm Complex Container - added DB and MDB permission backends - Complex container is now fully implemented. - addAreaAdmin and removeAreaAdmin where added to the Complex container - Admin.php getUser was removed and searchUser was renamed to getUsers and with new params (BC break!) - give each example a unique database name - moved selectable tables into property so that they can be overwritten - fixed autoinit handling in factoray (bug #3133) - added missing PEAR error to error stack conversions - return false if we previously ensured that the value is false anyways for clarity - call setAdminAuthContainer() in updateUser() and removeUser() to ensure that the proper auth container is affected - updated the file headers as per the RFC - getGroups() in the complex container was refactored and subgroup handling was reworked (BC break!) 0.2.1 0.2.1 beta beta 2005-03-30 LGPL - typo fix in autoinit option (bug #3844) - updated LiveUser dependency to 0.15.0 - fixed type handling in updateUser() - update getErrors() with code from the LiveUser class - typo fix in outputRightsConstants() (bug #3897) - removed calls to make remove filter on delete of relationship tables (bug #3874) 0.2.2 0.2.2 beta beta 2005-05-05 LGPL - delete() now uses findTable() to ensure that only defined table with the proper fields are being used - findTable() now only prefixes fields if necessary - typo fix: hierachy -> hierarchy (bug #4150) - added ability to prefix explicit tables in findTables() - no longer use "ids" in insert so we can remove this information from the Globals.php file in the client - examples were converted to use MDB2_Schema. See the demodata.php script found in the client part (http://cvs.php.net/co.php/pear/LiveUser/docs/examples/demodata.php) - added _call() overloading method for php5 users in LiveUser_Admin class - added support for table name aliasing (fairly untested) 0.3.0 0.3.0 beta beta 2005-06-21 LGPL - added _call() overloading method for php5 users in LiveUser_Admin class - dont require a conf array for all but the first call of singleton() - updated LiveUser dependency storage - delete() now uses findTable() to ensure that only defined table with the proper fields are being used - findTable() now only prefixes fields if necessary - added ability to prefix explicit tables in findTables() - no longer use "ids" in insert so we can remove this information from the Globals.php file in the client - added support for table name aliasing - tweaked NULL value handling in createWhere() (bug #4638) authentication - typo fix (bug #4109) - typo fix (bug #4173) - moved to admin storage class - tweaked disconnect to only disconnect when a new connection was made permission - typo fix: hierachy -> hierarchy (bug #4150) - improved the "with" support (fixing bug #3245) - tweaked disconnect to only disconnect when a new connection was made - fixed bug that would lead to hierarchy mode in getGroups only fetching the first subgroup level (bug #4633) examples - examples were converted to use MDB2_Schema. See the demodata.php script found in the client part (http://cvs.php.net/co.php/pear/LiveUser/docs/examples/demodata.php) - removed the test.php script since this code is outdated and serves no purpose any longer - updated examples to use the new auth config layout due to using admin storage - tweaked error handling on init() call 0.3.1 0.3.1 beta beta 2005-07-19 LGPL - php 4.4 reference assignment fixes - dont filter out subgroups from the previous level in _getGroupsWithHierarchy() (bug #4860) 0.3.2 0.3.2 beta beta 2005-08-09 LGPL - copy storage config before passing it to the storageFactory() since this method messes with the values which causes the original to be modified due to using pass by reference - removed old 'with' handling code that is no longer necessary from getGroups() in the medium container 0.3.3 0.3.3 beta beta 2005-08-17 LGPL - typo fix in phpdoc (bug #5054) - removed space in the example1 directory name - ensure that fields are properly aliased (bug #5059) - added an aliased field to exampl1 so that we can better test liveuser_admin - several CS fixes - removed uncessary optional dependencies on XML_Tree and Crypt_RC4 - fixed issue in upate() handling in the storage of required fields - supress errors due to deleting non existant tables in example1 - fixed bug in setFetchMode() calling in example1 - removed warning about extra_sql.sql in example1 - pass the storage config array by ref after all 0.3.4 0.3.4 beta beta 2005-09-02 LGPL - fixed typo error in sanity checking of the SQL storage layer update() method - fixed bug in the SQL storage layer insert() method that would lead to the sequence value not being returned if it was set externally. this for example leads to broken behaviour in the addUser() wrapper method in LiveUser_Admin - added error handler to example1 so that notices and warnings will not go unnoticed so easily in the large output 0.3.5 0.3.5 beta beta 2005-10-10 LGPL - only alias orders fields if needed (bug #5310) - fixed warning in _getGroupsWithHierarchy() if filters match no group - several typo fixes in getGroups() in the complex container - several fixes to getRights() in the complex container (bug #5453) - added test.php to the linkbar in example1 - removed autoInit (call setAdminContainers() manually instead) *BC BREAK* - reworked log/debug handling (there is a new 'debug' conf option which can either be a bool or a log instance) - made the log property public which made it possible to remove addErrorLog() - use static LiveUser::PEARLogFactory instead of loadPEARLog() 0.3.6 0.3.6 beta beta 2005-12-21 LGPL - dont raise an error when no user is found in getUsers() helper method (bug #5690) - fixed bug in handling of _checkExplicitTable() return value in findTables() (bug #5706) - tweaked error messages for failed factory method calls - renamed query() to exec() to match the MDB2 RC1 API - use exec() instead of query() - handle database structure merging inside the Storage class (previously handled in the auth/perm backend drivers) - improved sanity checking in insert and update when values for undefined fields are passed - do nothing in update() if an empty data array is passed - required fields may not be unset, but may be empty strings (corrected overly strict check in update() method) - owner_*_id is no longer necessary for the tests - leave owner_user_id management to the developer - tweaked errors messages in insert() and update() - in createJoinFilter first work through all the direct matches before recursing - typo in loadModule call in the MDB2 backend (bug #6092) - removed loginTimeout feature (disable lastlogin if you are concerned about the cost of updating the lastlogin time) - tons of phpdoc and whitespace fixes and additions - updated API calls to LiveUser to version 0.16.8 - renamed setAdminContainers() to init() 0.3.7 0.3.7 beta beta 2006-02-21 LGPL - fix "No rights for a user if the user only has inherited rights" (bug #6374) - do not overwrite all filters in _get*() helper methods - minor issue with 'alias' position in the config array in example1 - make sure that tables required as intermediate join steps are listed in the from - add depth parameter to createJoinFilter (may be used to determine shortest join path eventually) - fixed detection if list of tables has been reduced or not - do not push an error on the stack for a possible recursion because it may just be one possible path we are evaluating - added "by_group" optional parameter to params getRights() which determines if the userrights table should be used or rather the grouprights and groupupsers tables - incorrect handling of filters inside unimplyRights() (bug #6592) - renamed "connection" config option to "dbc" *BC BREAK* - cleaned up and unified init() in the storage classes - added support for '*' in fields list as an alias to fetch all fields in the root table - made LiveUser_Admin::getUsers() API as flexible as in the containers *BC BREAK* - fixed serious issue in join filter handling that caused join filters to be ignored - removed allowDuplicateHandles and allowEmptyPasswords options, they are now handled through the table definition in the given Globals.php (overwriteable via the config array) *BC BREAK* - typo fix in extended module loading in the MDB2 storage container - fixed inherited and implied handling in getRights() when fetching only 2 columns - added initial version of a PDO storage container (needs more testing) - removed setCurrentApplication()/getCurrentApplication() methods since they are no longer relevant *BC BREAK* 0.3.8 0.3.8 beta beta 2006-04-19 LGPL - wrong parameter used in getUsers('auth', ..) (report by gregory) - fixed usage of outdated getUsers() API in init() - phpdoc fix in outputRightsConstants() (bug #7037) - removed bogus parameter from phpdoc in getRights() in medium/complex container - added support for selectable_tables in the param array in get*() methods - fixed updating of implied right field in umimplyRight() (bug #7050) - made stack property public - remove artificial limitation that prevented groups to have multiple parents - fixed PDO storage layer queryAll() method (bug #7213) - expanded error handling in Log instance creation - fixed outdated API call to getRights() in _getInheritedRights() (bug #7236) - made translations columns wider for example1 - replace isset() with array_key_exists() where applicable - added link to area admin area test to the menu in example1 - reworked getRights() and getGroups() API for recursive reads (related to bug #7241) *BC break* Set the filter parameters for the recursion explicitly. For getGroups() in the 'subgroups', 'hierarchy' keys (note that hierarchy is now no longer specified by setting 'subgroups' => 'hierarchy'). For getRights() 'inherited', 'implied' and 'hierarchy' (note that hierarchy is now no longer specified by setting 'implied' => 'hierarchy';). - expanded outputRightsConstants() filtering - changed the getUsers(), addUser() and updateUser() API to be more in line with the container APIs *BC break* (req #7025) - added LiveUser_Admin_Storage::setSelectDefaultParams() to centralize default setting - added selectable_tables property to auth backend - fixed typos in 'with' handling in the perm container - prevent duplictate entries in the fields not yet linked array 0.3.9 0.3.9 beta beta 2010-10-06 LGPL - pass debug parameter by ref to the constructor since it can be an object instance - updated API calls of getBeforeId() and getAfterId() in the storage classes - refactored decryptPW() and encryptPW() into static methods in the LiveUser class - force null instead of false for PDO fetch() calls that return empty sets - added static error push when a non array is passed to setSelectDefaultParams() (Request #7779) - use empty() instead of array_key_exists() in setSelectDefaultParams() - update of auth_user_id not possible via LiveUser_Admin::updateUser() (Bug #7975; thx to Matthias) - fixed incorrect handling of single column joins (Bug #8424) - better handling of '*' inside the field list together with explicit fields (Bug #7955) 0.4.0 0.4.0 beta beta 2010-10-06 LGPL QA release Bug #13233 Example1 error when importing data in DB Bug #11051 Seems class variable is not declared Bug #8424 incorrect handling of single column joins