Migrazione della tabella utenti con password hash dalla vecchia app php alla nuova app laravel

Sto lavorando su una vecchia app php e la password degli utenti è stata sottoposta a hash con la function md5 (). Quindi le password sono memorizzate come:

c0c92dd7cc524a1eb55ffeb8311dd73f 

Sto sviluppando una nuova app con Laravel 4 e ho bisogno di suggerimenti su come migrare la tabella degli utenti senza perdere il field della password.

Allenta il field della password il più velocemente ansible, ma se non vuoi rischiare di perdere utenti, puoi fare qualcosa del genere con il tuo metodo auth:

 if (Auth::attempt(arrays('email' => Input::get('email'), 'password' => Input::get('password')))) { return Redirect::intended('dashboard'); } else { $user = User::where('email', Input::get('email'))->first(); if( $user && $user->password == md5(Input::get('password')) ) { $user->password = Hash::make(Input::get('password')); $user->save(); Auth::login($user->email); return Redirect::intended('dashboard'); } } 

In pratica cambierà una password da md5 a Hash each volta che un utente effettua l'accesso.

Ma devi davvero pensare a submit un link a tutti i tuoi utenti in modo che cambino le loro password.

MODIFICARE:

Per migliorare ulteriormente la sicurezza, secondo il commento di @martinstoeckli , sarebbe meglio:

Hash tutte le tue attuali password md5:

 foreach(Users::all() as $user) { $user->password = Hash::make($user->password); $user->save(); } 

E poi usa un metodo ancora più pulito per aggiornare le tue password:

 $password = Input::get('password'); $email = Input::get('email'); if (Auth::attempt(arrays('email' => $email, 'password' => $password))) { return Redirect::intended('dashboard'); } else if (Auth::attempt(arrays('email' => $email, 'password' => md5($password)))) { Auth::user()->password = Hash::make($password); Auth::user()->save(); return Redirect::intended('dashboard'); }