.: HosiriS :.

Informatica e non solo

Gestiamo in maniera corretta l’edit degli utenti con CakePHP

Posted by hosiris su novembre 14, 2011

Credo che vi sarete accorti che il sistema di login costruito con cake ha, tra gli altri, un piccolo difettuccio: quando si modifica un qualsiasi parametro dell’utente, automaticamente viene modificata la password di accesso. Questo succede perché il modulo calcola l’hash ogni volta che viene sottomesso un form.

Come possiamo risolvere questo problema fastidioso? La soluzione più interessante sfrutta un campo virtuale, chiamato new password, che ci darà modo di effettuare dei controlli.

Apriamo il nostro controller (users_controller.php) e aggiungiamo il seguende codice all’action di edit:


if (!empty($this->data) {
    if (!empty($this->data['Model']['new_password']) {
        $this->data['Model']['password'] = $this->Auth->password($this->data['Model']['new_password'];
    }

    if ($this->Model->save($this->data) {
        // data saved
    }
    else {
        // there was an error in the form submission
    }
} 

Naturalmente la nostra vista verrà modificata, apriamo il file edit.ctp e cerchiamo la seguente riga:

echo $this->Form->input('password');

e modifichiamola in:

echo $this->Form->input('new_password', array('label' => 'password', 'type' => 'password'));

Il funzionamento è molto semplice, se al submit il campo new_password è vuoto, allora non viene fatta nessuna modifica alla password, se, invece, abbiamo inserito una password verrà calcolato l’hash e sostituito al valore originale della password.

Buon divertimento!

Una Risposta to “Gestiamo in maniera corretta l’edit degli utenti con CakePHP”

  1. […] Gestiamo in maniera corretta l’edit degli utenti con CakePHP ::: HosiriS […]

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger cliccano Mi Piace per questo: