コード例 #1
0
 private function _getAuthModes()
 {
     if (CrugeUtil::config()->_lazyAuthModes == null) {
         CrugeUtil::config()->_lazyAuthModes = array();
         // levantamos las clases directo del disco
         $ruta = Yii::getPathOfAlias('cruge.models.auth');
         Yii::log("levantando clases de autenticacion de:\n" . $ruta . "\n", "info");
         $files = scandir($ruta);
         foreach ($files as $f) {
             if ($f != '.' && $f != '..') {
                 Yii::log("findfile: " . $f . ", isPhp?" . (CrugeUtil::isPhpFile($f) ? "YES" : "NO"), "info");
                 if (CrugeUtil::isPhpFile($f)) {
                     $className = CrugeUtil::getClassNameFromPhp($f);
                     if (class_exists($className)) {
                         if (!is_subclass_of($className, 'CBaseUserIdentity')) {
                             Yii::log("clase de autenticacion no es subclase de " . "CBaseUserIdentity. clase=" . $className, "error");
                             throw new CrugeException("clase de autenticacion no extiende de CBaseUserIdentity. ver log.");
                         }
                         // se asume que la clase provee la interfaz ICrugeAuth
                         // y crea la instancia:
                         $inst = new $className();
                         if (self::isAuthMethodAvailable($inst->authName()) == true) {
                             CrugeUtil::config()->_lazyAuthModes[] = $inst;
                         } else {
                             // existe, pero no esta definida en config por tanto no se agrega
                             //
                             Yii::log("Clase de autenticacion encontrada [{$className}] " . "pero no esta definida en config. " . "Su authName definido es: [" . $inst->authName() . "]", "info");
                         }
                     } else {
                         Yii::log("clase de autenticacion no es valida class_exist retorna false. " . className, "error");
                         throw new CrugeException("clase de autenticacion no es valida. ver log.");
                     }
                 }
                 // endif isPhpFile
             }
         }
         if (count(CrugeUtil::config()->_lazyAuthModes) == 0) {
             //
             // si llegamos a este punto es porque no se ha configurado
             // ningun metodo de autenticacion, o porque la carpeta models.auth esta vacia
             // o ninguno de sus archivos cumple con lo necesario.
             //
             Yii::log("Ninguna clase de autenticacion declarada cumple requerimientos", "error");
             throw new CrugeException("ninguna clase de autenticacion instalada " . "cumplio requerimientos");
         }
     }
     // endif lazy init
     return CrugeUtil::config()->_lazyAuthModes;
 }