Mahdee Rajon
File "UserTableSeeder.php"
Full Path: /var/www/html/back/database/seeders/UserTableSeeder.php
File size: 2.08 KB
MIME-type: text/x-php
Charset: utf-8
<?php
declare(strict_types=1);
namespace Database\Seeders;
use App\Domain\Users\UserService;
use App\Enums\RoleEnum;
use App\Models\User;
use App\Models\User as UserEloquent;
use Illuminate\Database\Seeder;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\{Str};
use Laravel\Sanctum\Sanctum;
final class UserTableSeeder extends Seeder
{
public function __construct(
private readonly UserEloquent $user
) {
}
/**
* Run the database seeds.
*/
public function run(): void
{
$file = UploadedFile::fake()->image(
name: uniqid() . '.jpg',
width: 100,
height: 100
);
/**
* @var UserService $service
*/
$service = app()->make(UserService::class);
/** @var User $admin */
$admin = $this->user->query()->create(attributes: [
'first_name' => 'Петров',
'last_name' => 'Петр',
'patronymic' => 'Петрович',
'email' => 'replay@top-it.ru',
'email_verified_at' => now(),
'password' => Hash::make(value: '#admin1234#'),
'is_active' => true,
'remember_token' => Str::random(length: 10)
]);
$admin->token();
Sanctum::$personalAccessTokenModel::query()->where('id', 1)->first()->update([
'token' => hash('sha256', '1234567890'),
]);
$admin->addMedia(file: $file)->toMediaCollection(
collectionName: 'avatars',
diskName: 'avatars'
);
$service->assignRole($admin, RoleEnum::ADMIN, null);
$users = $this->user->factory()->count(count: 10)->create();
$users->each(function (UserEloquent $user): void {
$file = UploadedFile::fake()->image(
name: uniqid() . '.jpg',
width: 100,
height: 100
);
$user->addMedia(file: $file)->toMediaCollection(
collectionName: 'avatars',
diskName: 'avatars'
);
});
}
}