From 439b0b12dc8f6cbeb769fe4f2c0061ff9d3c9d31 Mon Sep 17 00:00:00 2001 From: carlgmathisen <> Date: Tue, 2 Dec 2008 00:02:51 +0000 Subject: php configuration type --- framework/Security/TUserManager.php | 63 ++++++++++++++++++++++++++++++++----- 1 file changed, 55 insertions(+), 8 deletions(-) (limited to 'framework/Security') diff --git a/framework/Security/TUserManager.php b/framework/Security/TUserManager.php index 20b2cbb1..6326803d 100644 --- a/framework/Security/TUserManager.php +++ b/framework/Security/TUserManager.php @@ -4,7 +4,7 @@ * * @author Qiang Xue * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2008 PradoSoft + * @copyright Copyright © 2005-2008 PradoSoft * @license http://www.pradosoft.com/license/ * @version $Id$ * @package System.Security @@ -83,25 +83,72 @@ class TUserManager extends TModule implements IUserManager * Initializes the module. * This method is required by IModule and is invoked by application. * It loads user/role information from the module configuration. - * @param TXmlElement module configuration + * @param mixed module configuration */ public function init($config) { - $this->loadUserData($config); + $isPhp = $this->getApplication()->getConfigurationType()==TApplication::CONFIG_TYPE_PHP; + if($isPhp) + $this->loadUserDataFromPhp($config); + else + $this->loadUserDataFromXml($config); + if($this->_userFile!==null) { - $dom=new TXmlDocument; - $dom->loadFromFile($this->_userFile); - $this->loadUserData($dom); + if($isPhp) + { + $this->loadUserDataFromPhp($config); + } + else + { + $dom=new TXmlDocument; + $dom->loadFromFile($this->_userFile); + $this->loadUserDataFromXml($dom); + } } $this->_initialized=true; } + private function loadUserDataFromPhp($config) + { + if(isset($config['users']) && is_array($config['users'])) + { + foreach($config['users'] as $user) + { + $name = trim(strtolower(isset($user['name'])?$user['name']:'')); + $password = isset($user['password'])?$user['password']:''; + $this->_users[$name] = $password; + $roles = isset($user['roles'])?$user['roles']:''; + if($roles!=='') + { + foreach(explode(',',$roles) as $role) + { + if(($role=trim($role))!=='') + $this->_roles[$name][]=$role; + } + } + } + } + if(isset($config['roles']) && is_array($config['roles'])) + { + foreach($config['roles'] as $role) + { + $name = isset($role['name'])?$role['name']:''; + $users = isset($role['users'])?$role['users']:''; + foreach(explode(',',$users) as $user) + { + if(($user=trim($user))!=='') + $this->_roles[strtolower($user)][]=$name; + } + } + } + } + /** * Loads user/role information from an XML node. * @param TXmlElement the XML node containing the user information */ - private function loadUserData($xmlNode) + private function loadUserDataFromXml($xmlNode) { foreach($xmlNode->getElementsByTagName('user') as $node) { @@ -320,4 +367,4 @@ class TUserManagerPasswordMode extends TEnumerable const SHA1='SHA1'; } -?> +?> -- cgit v1.2.3