APP_KEY、SomeRandomStringのままにしていた人のために
APP_KEYは、php artisan key:generate コマンドで適当なキーが発行されます。
tinkerでやる必要はないですが、わざわざコマンドを作成する必要もないので、すぐに対応できるtinkerで対応します。
処理の流れは、
decrypt保存(復号化) -> APP_KEY変更 -> encrypt保存(暗号化)
実行前は、必ずdumpを取ってください。
本件でデータが壊れたり、復旧できなくなった場合の対応はできかねます。
0. APP_KEYを確認する
.env
// セキュアなAPP_KEYではない
APP_KEY=SomeRandomString
1. tinkerを起動する
php artisan tinker
2. 暗号化したデータを、復号して保存
tinker
$users = App\User::all();
// 暗号化されたデータを平文に変更
foreach ($users as $user) {
try{
$user->api_key = \Illuminate\Support\Facades\Crypt::decrypt($user->api_key);
$user->save();
} catch(\Exception $e) {
continue;
}
}
// exit 3. のAPP_KEYを使用するためにtinkerを終了する
3. APP_KEYを変更する
.env
// セキュアなAPP_KEYに変更する
// php artisan key:generate コマンドを叩くのが無難
APP_KEY=XXXXXXXXXX
4. tinkerを起動する
tinker
$users = App\User::all();
// 暗号化されたデータを平文に変更
foreach ($users as $user) {
try{
$user->api_key = \Illuminate\Support\Facades\Crypt::encrypt($user->api_key);
$user->save();
} catch(\Exception $e) {
continue;
}
}
// exit