Changeset 2916

Show
Ignore:
Timestamp:
07/22/08 16:42:26 (3 months ago)
Author:
steevanb
Message:

- #150 Mise aux normes de dev
- Séparation de l'expcetion CopixUserException? de CopixUser.class.php puisqu'elle est appelée par plusieurs autres classes
- Toutes les exceptions générées ont maintenant un code d'erreur unique

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/utils/copix/auth/CopixAuth.class.php

    r2870 r2916  
    11<?php 
    22/** 
    3  * @package        copix 
    4  * @subpackage auth 
    5  * @author     Gérald Croës 
    6  * @copyright  CopixTeam 
    7  * @link       http://copix.org 
    8  * @license        http://www.gnu.org/licenses/lgpl.html GNU General Lesser Public Licence, see LICENCE file 
     3 * @package copix 
     4 * @subpackage auth 
     5 * @author Gérald Croës 
     6 * @copyright CopixTeam 
     7 * @link http://copix.org 
     8 * @license http://www.gnu.org/licenses/lgpl.html GNU General Lesser Public Licence, see LICENCE file 
    99*/ 
    1010 
     
    1212 * Classe de base pour les exceptions d'authentification  
    1313 *  
    14  * @package        copix 
    15  * @subpackage auth 
     14 * @package copix 
     15 * @subpackage auth 
    1616 */ 
    1717class CopixAuthException extends CopixException {} 
     
    2020 * Gestion des informations sur l'authentification 
    2121 *  
    22  * @package        copix 
    23  * @subpackage auth 
     22 * @package copix 
     23 * @subpackage auth 
    2424 */ 
    2525class CopixAuth { 
     
    2929     * @return CopixUser 
    3030     */ 
    31     static public function getCurrentUser () { 
     31    public static function getCurrentUser () { 
    3232        if (($user = CopixSession::get ('copix|auth|user')) === null) { 
    3333            CopixSession::set ('copix|auth|user', new CopixUser ()); 
    34         }elseif (! ($user instanceof ICopixUser))
     34        } else if (!($user instanceof ICopixUser))
    3535            CopixSession::set ('copix|auth|user', new CopixUser ()); 
    3636        } 
     
    4141     * Destruction de l'utilisateur courant 
    4242     */ 
    43     static public function destroyCurrentUser () { 
     43    public static function destroyCurrentUser () { 
    4444        CopixSession::set ('copix|auth|user', null); 
    4545    } 
     
    4949 * Classe qui gère le parsing des module.xml pour enregistrer les handlers  
    5050 *  
    51  * @package        copix 
    52  * @subpackage auth 
     51 * @package copix 
     52 * @subpackage auth 
    5353 */ 
    5454class CopixAuthParserHandler { 
    55      
    5655    /** 
    5756     * Parse les handlers de type User 
     
    6261    public static function parseUserHandler ($pXmlNode) { 
    6362        $toReturn = array (); 
    64         foreach ($pXmlNode as $module=>$userHandlers) { 
     63        foreach ($pXmlNode as $module => $userHandlers) { 
    6564            foreach ($userHandlers as $userHandler) { 
    66                 $tempUserHandler                    = array (); 
    67                 $tempUserHandler['name']            = (string)$module.'|'.$userHandler['name']; 
    68                 $tempUserHandler['required']        = (isset ($userHandler['required'])) ? ($userHandler['required']!='false') : null; 
    69                 $tempUserHandler['rank']            = (isset ($userHandler['rank'])) ? (string)$userHandler['rank'] : null; 
     65                $tempUserHandler = array (); 
     66                $tempUserHandler['name'] = (string)$module . '|' . $userHandler['name']; 
     67                $tempUserHandler['required'] = (isset ($userHandler['required'])) ? ($userHandler['required'] != 'false') : null; 
     68                $tempUserHandler['rank'] = (isset ($userHandler['rank'])) ? (string)$userHandler['rank'] : null; 
    7069                $toReturn[$tempUserHandler['name']] = $tempUserHandler;  
    7170            } 
     
    8281    public static function parseCredentialHandler ($pXmlNode) { 
    8382        $toReturn = array (); 
    84         foreach ($pXmlNode as $module=>$credentialHandlers) { 
     83        foreach ($pXmlNode as $module => $credentialHandlers) { 
    8584            foreach ($credentialHandlers as $credentialHandler) { 
    86                 $tempCredentialHandler             = array (); 
    87                 $tempCredentialHandler['name']     = (string)$module.'|'.$credentialHandler['name']; 
    88                 $tempCredentialHandler['stopOnSuccess'] = (isset ($credentialHandler['stopOnSuccess'])) ? ($credentialHandler['stopOnSuccess']!='false') : null; 
    89                 $tempCredentialHandler['stopOnFailure'] = (isset ($credentialHandler['stopOnFailure'])) ? ($credentialHandler['stopOnFailure']!='false') : null; 
     85                $tempCredentialHandler = array (); 
     86                $tempCredentialHandler['name'] = (string)$module . '|' . $credentialHandler['name']; 
     87                $tempCredentialHandler['stopOnSuccess'] = (isset ($credentialHandler['stopOnSuccess'])) ? ($credentialHandler['stopOnSuccess'] != 'false') : null; 
     88                $tempCredentialHandler['stopOnFailure'] = (isset ($credentialHandler['stopOnFailure'])) ? ($credentialHandler['stopOnFailure'] != 'false') : null; 
    9089                if (isset ($credentialHandler->handle)) { 
    9190                    $tempHandle = array (); 
     
    116115    public static function parseGroupHandler ($pXmlNode) { 
    117116        $toReturn = array (); 
    118         foreach ($pXmlNode as $module=>$groupHandlers) { 
     117        foreach ($pXmlNode as $module => $groupHandlers) { 
    119118            foreach ($groupHandlers as $groupHandler) { 
    120                 $tempGroupHandler                    = array (); 
    121                 $tempGroupHandler['name']            = (string)$module.'|'.$groupHandler['name']; 
    122                 $tempGroupHandler['required']        = (isset ($groupHandler['required'])) ? ($groupHandler['required']!='false') : null; 
     119                $tempGroupHandler = array (); 
     120                $tempGroupHandler['name'] = (string)$module . '|' . $groupHandler['name']; 
     121                $tempGroupHandler['required'] = (isset ($groupHandler['required'])) ? ($groupHandler['required'] != 'false') : null; 
    123122                $toReturn[$tempGroupHandler['name']] = $tempGroupHandler;  
    124123            } 
    125124        } 
    126125        return $toReturn; 
    127     }  
    128      
     126    } 
    129127} 
  • trunk/utils/copix/auth/CopixCredentialHandlerFactory.class.php

    r2870 r2916  
    11<?php 
    22/** 
    3  * @package        copix 
    4  * @subpackage auth 
    5  * @author     Croës Gérald 
    6  * @copyright  CopixTeam 
    7  * @link       http://www.copix.org 
    8  * @license        http://www.gnu.org/licenses/lgpl.html GNU General Lesser Public Licence, see LICENCE file 
     3 * @package copix 
     4 * @subpackage auth 
     5 * @author Croës Gérald 
     6 * @copyright CopixTeam 
     7 * @link http://www.copix.org 
     8 * @license http://www.gnu.org/licenses/lgpl.html GNU General Lesser Public Licence, see LICENCE file 
    99*/ 
    1010 
     
    1212 * Exception de base pour les droits insufisants 
    1313 *  
    14  * @package        copix 
    15  * @subpackage auth 
     14 * @package copix 
     15 * @subpackage auth 
    1616 */ 
    1717class CopixCredentialException extends CopixException {} 
     
    2020 * Interface pour les credentials handlers 
    2121 *  
    22  * @package        copix 
    23  * @subpackage auth 
     22 * @package copix 
     23 * @subpackage auth 
    2424 */ 
    2525interface ICopixCredentialHandler { 
     
    3030     * @param string $pString Chaine de droit, qui ne doit pas contenir le type 
    3131     * @param CopixUser L'utilisateur courant 
    32      * @return bool 
     32     * @return boolean 
    3333     */ 
    3434    public function assert ($pStringType, $pString, $pUser); 
     
    3636 
    3737/** 
    38 * @package     copix 
    39 * @subpackage  auth 
     38* @package copix 
     39* @subpackage auth 
    4040*/ 
    4141class CopixCredentialHandlerFactory { 
     
    4343     * Handlers déjà instanciés 
    4444     *  
    45      * @var array of ICopixCredentialsHandler 
     45     * @var ICopixCredentialsHandler[] 
    4646     */ 
    4747    private static $_handlers = array (); 
     
    5959                self::$_handlers[$pHandlerId] = _ioClass ($pHandlerId); 
    6060            } catch (Exception $e) { 
    61                 throw new CopixUserException (_i18n ('copix:copixuser.error.undefinedCredentialHandler', $pHandlerId)); 
     61                throw new CopixUserException ( 
     62                    _i18n ('copix:copixuser.error.undefinedCredentialHandler', $pHandlerId), 
     63                    CopixUserException::UNDEFINED_CREDENTIAL_HANDLER 
     64                ); 
    6265            } 
    6366        } 
  • trunk/utils/copix/auth/CopixGroupHandlerFactory.class.php

    r2870 r2916  
    11<?php 
    22/** 
    3  * @package        copix 
    4  * @subpackage auth 
    5  * @author     Gérald Croës 
    6  * @copyright  CopixTeam 
    7  * @link       http://copix.org 
    8  * @license        http://www.gnu.org/licenses/lgpl.html GNU General Lesser  Public Licence, see LICENCE file 
     3 * @package copix 
     4 * @subpackage auth 
     5 * @author Gérald Croës 
     6 * @copyright CopixTeam 
     7 * @link http://copix.org 
     8 * @license http://www.gnu.org/licenses/lgpl.html GNU General Lesser  Public Licence, see LICENCE file 
    99 */ 
    1010 
     
    1212 * Interface de gestion des groupes 
    1313 *  
    14  * @package        copix 
    15  * @subpackage auth 
     14 * @package copix 
     15 * @subpackage auth 
    1616 */ 
    1717interface ICopixGroupHandler { 
     
    4747     * @var array 
    4848     */ 
    49     static private $_handlers = array (); 
     49    private static $_handlers = array (); 
    5050 
    5151    /** 
     
    5454     * @param mixed $pHandlerId Identifiant du handler à créer 
    5555     * @return CopixUserHandler 
    56      * @throws CopixUserException 
     56     * @throws CopixUserException Handler de group non définit 
    5757     */ 
    58     static public function create ($pHandlerId) { 
     58    public static function create ($pHandlerId) { 
    5959        if (!isset (self::$_handlers[$pHandlerId])) { 
    6060            try { 
    6161                self::$_handlers[$pHandlerId] = _ioClass ($pHandlerId); 
    6262            } catch (Exception $e) { 
    63                 throw new CopixUserException (_i18n ('copix:copixuser.error.undefinedGroupHandler', $pHandlerId)); 
     63                throw new CopixUserException ( 
     64                    _i18n ('copix:copixuser.error.undefinedGroupHandler', $pHandlerId), 
     65                    CopixUserException::UNDEFINED_GROUP_HANDLER 
     66                ); 
    6467            } 
    6568        } 
  • trunk/utils/copix/auth/CopixUser.class.php

    r2870 r2916  
    11<?php 
    22/** 
    3  * @package        copix 
    4  * @subpackage auth 
    5  * @author     Croës Gérald 
    6  * @copyright  CopixTeam 
    7  * @link       http://copix.org 
    8  * @license        http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file 
     3 * @package copix 
     4 * @subpackage auth 
     5 * @author Croës Gérald 
     6 * @copyright CopixTeam 
     7 * @link http://copix.org 
     8 * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file 
    99 */ 
    10  
    11 /** 
    12  * Exceptions utilisateurs 
    13  *  
    14  * @package     copix 
    15  * @subpackage  auth 
    16  */ 
    17 class CopixUserException extends CopixException {} 
    1810 
    1911/** 
    2012 * Authentification et gestion des droits 
    2113 *  
    22  * @package        copix 
    23  * @subpackage auth 
     14 * @package copix 
     15 * @subpackage auth 
    2416 */ 
    2517class CopixUser implements ICopixUser { 
     
    5547        $this->_groups = false; 
    5648          
    57         $responses = array(); 
     49        $responses = array (); 
    5850        $isConnected = false; 
    5951        // N.B: les gestionnaires étant triés par rang croissant, les réponses le seront aussi... 
     
    6658            if( $result->getResult () ) { 
    6759                $isConnected = true; 
    68             } elseif ($handler['required'] === true && (!isset ($pParams['append']) || !$pParams['append'])) { 
     60            } else if ($handler['required'] === true && (!isset ($pParams['append']) || !$pParams['append'])) { 
    6961                //On ne passe pas dans le required si on est en mode append 
    7062                $isConnected = false; 
     
    112104            $arGroupHandler = array (); 
    113105            //Pour chaque utilisateur testé lors du processus de login, on demande la liste de ses groupes   
    114             foreach ($this->getResponses(true) as $logResult) { 
    115                 foreach ($handler->getUserGroups ($logResult->getId (), $logResult->getHandler()) as $id => $group) { 
     106            foreach ($this->getResponses (true) as $logResult) { 
     107                foreach ($handler->getUserGroups ($logResult->getId (), $logResult->getHandler ()) as $id => $group) { 
    116108                    $arGroupHandler[$id] = $group; 
    117109                } 
     
    134126     * 
    135127     * @param string $pString Chaine de droit à tester (ex : basic:admin@news) 
    136      * @throws CopixCredentialException  
     128     * @throws CopixCredentialException L'utilisateur courant n'a pas ce droit 
    137129     */ 
    138130    public function assertCredential ($pString) { 
     
    154146        } 
    155147 
    156         $pStringType   = substr ($pString, 0, strpos ($pString, ':')); 
    157         $pStringString = substr ($pString, strpos ($pString, ':')+1); 
     148        $pStringType = substr ($pString, 0, strpos ($pString, ':')); 
     149        $pStringString = substr ($pString, strpos ($pString, ':') + 1); 
    158150 
    159151        $success = false; 
    160         foreach (CopixConfig::instance ()->copixauth_getRegisteredCredentialHandlers() as $handler) { 
     152        foreach (CopixConfig::instance ()->copixauth_getRegisteredCredentialHandlers () as $handler) { 
    161153            if ((is_array ($handler['handle']) && in_array ($pStringType, $handler['handle'])) || $handler['handle'] === 'all') { 
    162154                if (!((is_array ($handler['handleExcept']) && in_array ($pStringType, $handler['handleExcept'])) || $handler['handleExcept'] === $pStringType)) { 
     
    167159                        } 
    168160                        $success = $success || false; 
    169                     }elseif ($result === true) { 
     161                    } else if ($result === true) { 
    170162                        if ($handler['stopOnSuccess']) { 
    171163                            return $this->_asserted[$pString] = true; 
     
    196188     */ 
    197189    public function getId () { 
    198         return !is_null($response = $this->_getFirstLogged ()) ? $response->getId () : null; 
     190        return (!is_null ($response = $this->_getFirstLogged ())) ? $response->getId () : null; 
    199191    } 
    200192     
     
    205197     */ 
    206198    public function getCaption () { 
    207         return !is_null($response = $this->_getFirstLogged ()) ? $response->getCaption () : null; 
     199        return (!is_null ($response = $this->_getFirstLogged ())) ? $response->getCaption () : null; 
    208200    } 
    209201     
     
    214206     */ 
    215207    public function getLogin () { 
    216         return !is_null($response = $this->_getFirstLogged ()) ? $response->getLogin () : null; 
     208        return (!is_null ($response = $this->_getFirstLogged ())) ? $response->getLogin () : null; 
    217209    } 
    218210     
     
    223215     */ 
    224216    public function getHandler () { 
    225         return !is_null($response = $this->_getFirstLogged ()) ? $response->getHandler () : null;      
     217        return (!is_null ($response = $this->_getFirstLogged ())) ? $response->getHandler () : null;       
    226218    } 
    227219     
     
    231223     * @return array Tableau de la forme ("nom_du_gestionnaire", "id_utilisateur") ou null 
    232224     */ 
    233     public function getIdentity() { 
    234         return !is_null($response = $this->_getFirstLogged ()) ? $response->getIdentity() : null;      
     225    public function getIdentity () { 
     226        return (!is_null ($response = $this->_getFirstLogged ())) ? $response->getIdentity () : null;      
    235227    } 
    236228     
     
    238230     * recherche l'information $pInformationId dans les réponses apportées durant le processus de login. 
    239231     * 
    240      * @param string $pInformationId   Le nom de l'information que l'on recherche 
    241      * @param string $pUserHandler    Dans quelle réponse on cherche. Si rien n'est donné, on prend la première information qui porte le nom demandé 
    242      */ 
    243     public function getExtra ($pInformationId, $pUserHandler = null)
    244         if ($pUserHandler === null)
    245             foreach ($this->_logged as $userHandler=>$userResponse)
     232     * @param string $pInformationId Le nom de l'information que l'on recherche 
     233     * @param string $pUserHandler Dans quelle réponse on cherche. Si rien n'est donné, on prend la première information qui porte le nom demandé 
     234     */ 
     235    public function getExtra ($pInformationId, $pUserHandler = null)
     236        if ($pUserHandler === null)
     237            foreach ($this->_logged as $userHandler => $userResponse)
    246238                $extra = $userResponse->getExtra (); 
    247                 if (isset ($extra[$pInformationId]))
     239                if (isset ($extra[$pInformationId]))
    248240                    return $extra[$pInformationId]; 
    249241                } 
    250242            } 
    251         }else
    252             if (isset ($this->_logged[$pUserHandler]))
     243        } else
     244            if (isset ($this->_logged[$pUserHandler]))
    253245                $extra = $this->_logged[$pUserHandler]->getExtra (); 
    254                 return isset ($extra[$pInformationId]) ? $extra[$pInformationId] : null;  
     246                return (isset ($extra[$pInformationId])) ? $extra[$pInformationId] : null;  
    255247            } 
    256248        } 
     
    263255     * @return array Tableau de la forme ("nom_du_gestionnaire", "id_utilisateur"), potentiellement vide 
    264256     */ 
    265     public function getIdentities() { 
    266         $toReturn = array(); 
    267         foreach($this->_logged as $response) { 
    268             if($response->getResult()) { 
    269                 $toReturn[] = $response->getIdentity(); 
     257    public function getIdentities () { 
     258        $toReturn = array (); 
     259        foreach ($this->_logged as $response) { 
     260            if ($response->getResult ()) { 
     261                $toReturn[] = $response->getIdentity (); 
    270262            } 
    271263        }        
     
    274266     
    275267    /** 
    276      * Retourne la première réponse positive. 
     268     * Retourne la première réponse positive 
    277269     *  
    278270     * @return CopixUserLogResponse  
     
    281273        // Rappelez vous : les réponses sont classées par rang 
    282274        foreach($this->_logged as $response) { 
    283             if($response->getResult()) { 
     275            if($response->getResult ()) { 
    284276                return $response; 
    285277            } 
     
    291283     * Indique si l'utisateur à été correctement identifié via un handler donné 
    292284     *  
     285     * @deprecated 
     286     * @see CopixUser::isConnectedWith 
     287     */ 
     288    public function isLoggedWith ($pHandlerName) { 
     289        return $this->isConnectedWith ($pHandlerName); 
     290    } 
     291 
     292    /** 
     293     * Indique si l'utilisateur est connecté avec un handler donné 
     294     *  
    293295     * @param string $pHandlerName Nom du handler 
    294296     * @return bool 
    295      * @deprecated 
    296      * @see CopixUser::isConnectedWith 
    297      */ 
    298     public function isLoggedWith ($pHandlerName) { 
    299         return $this->isConnectedWith ($pHandlerName); 
    300     } 
    301  
    302     /** 
    303      * Indique si l'utilisateur est connecté avec un handler donné. 
    304      *  
    305      * @param string $pHandlerName Nom du handler 
    306      * @return bool 
    307297     */ 
    308298    public function isConnectedWith ($pHandlerName) { 
    309         foreach($this->_logged as $response) { 
    310             if($response->getResult() && $response->getHandler() == $pHandlerName) { 
     299        foreach ($this->_logged as $response) { 
     300            if ($response->getResult () && $response->getHandler () == $pHandlerName) { 
    311301                return true; 
    312302            } 
     
    316306 
    317307    /** 
    318      * Vérifie si l'utilisateur est connecté avec le gestionnaire et l'identifiant indiqué. 
     308     * Vérifie si l'utilisateur est connecté avec le gestionnaire et l'identifiant indiqué 
    319309     * 
    320      * @param string $$pHandlerName Nom du gestionnaire. 
     310     * @param string $pHandlerName Nom du gestionnaire. 
    321311     * @param mixed $pUserId Identifiant de l'utilisateur. 
    322      * @return boolean Vrai si l'utilisateur est reconnu.  
    323      */ 
    324     public function isConnectedAs($pHandlerName, $pUserId) { 
    325         foreach($this->_logged as $response) { 
    326             if($response->getResult() && $response->getHandler() == $pHandlerName && $response->getId() == $pUserId) { 
     312     * @return boolean 
     313     */ 
     314    public function isConnectedAs ($pHandlerName, $pUserId) { 
     315        foreach ($this->_logged as $response) { 
     316            if ($response->getResult () && $response->getHandler () == $pHandlerName && $response->getId () == $pUserId) { 
    327317                return true; 
    328318            } 
     
    335325     *  
    336326     * @param string $pHandlerName Nom du handler 
    337      * @return array of CopixUserResponse  / false si aucune réponse 
     327     * @return CopixUserResponse[] ou false si aucune réponse 
    338328     */ 
    339329    public function getHandlerResponse ($pHandlerName) { 
    340         $toReturn = array(); 
    341         foreach($this->_logged as $response) { 
    342             if($response->getHandler() == $pHandlerName) { 
     330        $toReturn = array (); 
     331        foreach ($this->_logged as $response) { 
     332            if ($response->getHandler () == $pHandlerName) { 
    343333                $toReturn[] = $response; 
    344334            } 
    345335        }        
    346         switch(count($toReturn)) { 
     336        switch (count ($toReturn)) { 
    347337            case 0: return false; 
    348338            case 1: return $toReturn[0]; 
  • trunk/utils/copix/auth/CopixUserHandlerFactory.class.php

    r2870 r2916  
    11<?php 
    22/** 
    3  * @package        copix 
    4  * @subpackage auth 
    5  * @author     Gérald Croës 
    6  * @copyright  CopixTeam 
    7  * @link       http://copix.org 
    8  * @license        http://www.gnu.org/licenses/lgpl.html GNU General Lesser Public Licence, see LICENCE file 
     3 * @package copix 
     4 * @subpackage auth 
     5 * @author Gérald Croës 
     6 * @copyright CopixTeam 
     7 * @link http://copix.org 
     8 * @license http://www.gnu.org/licenses/lgpl.html GNU General Lesser Public Licence, see LICENCE file 
    99 */ 
    1010 
    1111/** 
    12  * Interface des classes décrivant un utilisateur. 
     12 * Interface des classes décrivant un utilisateur 
    1313 * 
     14 * @package copix 
     15 * @subpackage auth 
    1416 */ 
    1517interface ICopixUser { 
    16      
    1718    /** 
    18      * Retourne le libellé de l'utilisateur. 
     19     * Retourne le libellé de l'utilisateur 
    1920     * 
    2021     * @return string 
    2122     */ 
    22     public function getCaption(); 
     23    public function getCaption (); 
    2324     
    2425    /** 
    25      * Retourne le login de l'utilisateur. 
     26     * Retourne le login de l'utilisateur 
    2627     *  
    2728     * @return string 
    2829     */ 
    29     public function getLogin(); 
     30    public function getLogin (); 
    3031 
    3132    /** 
    32      * Retourne l'identifiant technique de l'utilisateur.  
     33     * Retourne l'identifiant technique de l'utilisateur 
    3334     * 
    3435     * @return mixed 
    3536     */ 
    36     public function getId(); 
     37    public function getId (); 
    3738     
    3839    /** 
    39      * Retourne le nom du handler responsable de cet utilisateur. 
     40     * Retourne le nom du handler responsable de cet utilisateur 
    4041     * 
    4142     * @return string 
    4243     */ 
    43     public function getHandler(); 
    44      
     44    public function getHandler (); 
    4545} 
    4646 
     
    4848 * Interface pour les handlers d'utilisateur 
    4949 *  
    50  * @package        copix 
    51  * @subpackage auth 
     50 * @package copix 
     51 * @subpackage auth 
    5252 */ 
    5353interface ICopixUserHandler { 
     
    7878     *  
    7979     * @param array $pParams Critères de recherche (id, login et caption au minimum) 
    80      * @return array of ICopixUser 
     80     * @return ICopixUser[]  
    8181     */ 
    8282    public function find ($pParams = array ()); 
     
    108108                self::$_handlers[$pHandlerId] = _ioClass ($pHandlerId); 
    109109            } catch (Exception $e) { 
    110                 throw new CopixUserException (_i18n ('copix:copixuser.error.undefinedUserHandler', $pHandlerId)); 
     110                throw new CopixUserException ( 
     111                    _i18n ('copix:copixuser.error.undefinedUserHandler', $pHandlerId), 
     112                    CopixUserException::UNDEFINED_USER_HANDLER 
     113                ); 
    111114            } 
    112115        }