Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

CakePHP - El password cambia cuando quier agregar un user

Estas en el tema de CakePHP - El password cambia cuando quier agregar un user en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, no se q toque q cuando quiero agregar un usuario, el password cambia. Estoy probando el tema de validaciones y cuando genero un error ...
  #1 (permalink)  
Antiguo 09/12/2013, 11:46
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
CakePHP - El password cambia cuando quier agregar un user

Hola,

no se q toque q cuando quiero agregar un usuario, el password cambia.

Estoy probando el tema de validaciones y cuando genero un error de usuario, la pagina se actualiza y el password me cambia en el input.
Es como q genera otro password a partir del primero q ingreso. No se como cargar el mismo pass.

Tengo la siguiente funcion:

Código PHP:

    
//Agregar usuario
    
public function add() {
        
//Solo root y admin agregan users
        
$this->Acl->aro = array('1''2');
        if (!
$this->Acl->isAuthorized()) {
            
$this->Session->setFlash(_('No puede realizar esta acción'));
            
$this->redirect(array('action' => 'index'));
        }
        
         
//Verifico datos por post o put
        
if ($this->request->is('post') or $this->request->is('put')) {

                
//cifrado del pass
                
$this->request->data['User']['password'] = Security::hash($this->request->data['User']['password'], 'sha1');                
                
            
$this->User->create();            
             
$this->User->set($this->request->data);                
               if (
$this->User->save($this->request->data)) {
                
$this->Session->setFlash(__('Usuario agregado'));
                return 
$this->redirect(array('action' => 'index'));
              }
            
$this->Session->setFlash(__('El usuario no se guardó'));            
        }
    } 

Gracias
  #2 (permalink)  
Antiguo 10/12/2013, 13:39
 
Fecha de Ingreso: febrero-2012
Mensajes: 37
Antigüedad: 12 años, 2 meses
Puntos: 5
Respuesta: CakePHP - El password cambia cuando quier agregar un user

Hola compañero.
Cito parte de tu código:
Código PHP:
         //Verifico datos por post o put
        
if ($this->request->is('post') or $this->request->is('put')) {

                
//cifrado del pass
                
$this->request->data['User']['password'] = Security::hash($this->request->data['User']['password'], 'sha1');                
            
$this->User->create(); 
Si lo comprendí bien, inmediatamente después que se manda el formulario entra a esta parte del código, de ser así, lo primero que haces es modificar el valor de

$this->request->data['User']['password']

con un valor cifrado en sha1 de su correspondiente valor.

Cuando todo marcha correctamente sin errores, entonces el usuario se guarda, en cambio cuando hay errores lo que cake hace es regresar el $this->request->data con los valores originalmente enviados desde el formulario hacia la vista. Ahí es cuando cake muestra los errores y además automaticamente rellena los campos del formulario con los valores previamente enviados, me parece que se llama "Sticky Forms"

Pero sucede que en tu controlador, desde la primera vez que llegaron los datos, modificaste el valor de ['User']['password'] y ahora lo que regresa a la vista no es el password como lo escribió el usuario, lo que llega es una cadena cifrada en sha1 + los demás datos + los errores mostrados.

para verificar esto haz un
Código PHP:
pr($this->request->data
con esto verificas que contiene el array devuelto a la vista.

Se me ocurre que puedes solucionarlo si cifras el password después de validar los otros campos previo a almacenar, así en caso de errores regresaría el password en claro.

Otra manera podría ser borrar el valor de ['User']['password'] y si se equivoca en los otros campos tendrías que reescribirlo.

Saludos
  #3 (permalink)  
Antiguo 10/12/2013, 18:43
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: CakePHP - El password cambia cuando quier agregar un user

Muchas gracias por tu respuesta.
Gracias al pr() me di cuenta del error y lo pude solucionar.
Al pass lo cifro de otra forma q vi en la api de cake y otros ejemplos q vi en la web.

Al principio hacia eso del borrar campo password con un unset hasta q pude solucionarlo.

Saludos

Etiquetas: cakephp, password, post, usuario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:43.