Хеширование паролей в сидере Laravel
Заголовки, slug и email мы уже
умеем генерировать через
Str::random и конкатенацию.
С пользователями иначе: по таблице
users потом проверяют вход
на сайт. Пароль в базе нельзя
хранить открытым текстом -
только хеш, из которого
исходный пароль не восстановить.
Зачем так устроено, разобрано
в уроке про
хеширование паролей
основного учебника PHP.
В Laravel для сидеров используют
фасад Hash и метод make:
передаёте пароль - получаете
готовую строку для колонки
password. Подключим
Hash к сидеру:
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
}
}
?>
При вставке пользователя
захешируем пароль через
make. Для теста
возьмём простой пароль
password - в базу
попадёт уже не он сам,
а его хеш:
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10) . '@example.com',
'password' => Hash::make('password'),
]);
}
}
?>
Выполним команду на вставку:
php artisan db:seed
Сделайте сидер, который добавит в базу пользователей с захешированными паролями.
Сделайте сидер, который добавит в базу пользователя с паролем, который вы сможете проверить при входе.