Миграция таблицы пользователей с хешированным паролем из старого приложения php в новое приложение laravel

Я работаю над старым приложением php, и пароль пользователей хэшируется с помощью функции md5 (). Таким образом, пароли хранятся как:

c0c92dd7cc524a1eb55ffeb8311dd73f 

Я разрабатываю новое приложение с Laravel 4, и мне нужны предложения о том, как переносить таблицу пользователей, не теряя поля пароля.

Освободите это поле пароля так быстро, как только сможете, но если вы не хотите рисковать потерять пользователей, вы можете сделать что-то вроде этого в своем методе auth:

 if (Auth::attempt(array('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'); } } 

Это в основном изменяет пароль с md5 на Hash каждый раз, когда пользователь входит в систему.

Но вам действительно нужно подумать о том, чтобы отправить ссылку всем своим пользователям, чтобы они меняли свои пароли.

РЕДАКТИРОВАТЬ:

Чтобы улучшить безопасность еще больше, согласно комментарию @martinstoeckli , было бы лучше:

Хеш все ваши текущие пароли md5:

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

И затем используйте еще более чистый метод обновления паролей:

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