Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/12/2013, 13:39
arhego
 
Fecha de Ingreso: febrero-2012
Mensajes: 37
Antigüedad: 12 años, 3 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