/** * We will initially identify the user */ function identify(CakeRequest $request, CakeResponse $response) { if (Configure::read('authType') == 'ldap') { $ldapUser = $this->_ldapAuth($request); //Busco el usuario de ldap, si me regresa un registro significa que su contrase?a y usuario son correctos if (!isset($ldapUser[0]['dn'])) { return false; } //Cargo el modelo para hacer la busqueda del usuario y ver si esta dado de alta en la aplicacion App::import('Model', $this->authenticate['Form']['userModel']); $model = new $this->authenticate['Form']['userModel'](); $model->recursive = -1; //Unicamente traemos los datos de la tabla $usuario = $model->find('first', array('conditions' => array($this->authenticate['Form']['fields']['username'] => $request->data[$this->authenticate['Form']['userModel']][$this->authenticate['Form']['fields']['username']]))); if (empty($usuario)) { return false; } //Guardaremos su contraseƱa actual en LDAP encriptada para que el identify funcione adecuadamente, ademas si por algun motivo el metodo de autenticacion cambia a BD, podran seguir usando su ultima contraseƱa de LDAP registrada $model->id = $usuario[$this->authenticate['Form']['userModel']][$model->primaryKey]; $model->saveField($this->authenticate['Form']['fields']['password'], $request->data[$this->authenticate['Form']['userModel']][$this->authenticate['Form']['fields']['password']]); return parent::identify($request, $response); } else { return parent::identify($request, $response); } }
function identify($user = null, $conditions = null) { $models = array('Member'); foreach ($models as $model) { $this->userModel = $model; // switch model $result = parent::identify($user, $conditions); // let cake do it's thing if ($result) { return $result; // login success } } return null; // login failure }