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; }