内容
表題の通り。
なぜ記事にした?
・laravelのmiddlewareを使った実装の練習をしたかった
・環境を作るのを省くため、phpsandboxでやりたかった
・ダミーデータでログインする方法が割と書いてない
参考
https://qiita.com/shunpeister/items/5ff1d71aedaf86712371
こちらの記事を、phpsandboxで実践します
前提知識
本編、手順
以下、手順です
プロジェクトとrolesテーブルの作成
- テンプレートから、laravel10 breeze(blade)のプロジェクト?(notebook)を作成
-
php artisan make:migration create_roles_table
を実行:マイグレーション作成。ユーザーマイグレーションファイルは既にあるのがいいところ - migrationファイルの中身を変更(※下記)
-
php artisan migrate
を実行 -
sqlite3 database.splite
を実行:テーブルの確認
※3のマイグレーションファイルの中身
~create_roles_table.php
public function up(): void
{
// Schema::create('roles', function (Blueprint $table) {
// $table->id();
// $table->timestamps();
// });
Schema::create('roles', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->timestamps();
});
// Inserting initial data
DB::table('roles')->insert([
['name' => '管理者'],
['name' => 'リーダー'],
['name' => 'マネージャー'],
['name' => 'メンバー'],
]);
}
~create_users_table.php
public function up(): void
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
+ $table->foreignId('role_id')->constrained('roles');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
ダミーデータの作成、ログイン
-
userFactory.php
にrole_id
を追加(※コードは下記) -
./database/seeders/DatabaseSeeder.php
について、コメントアウトを外す。 -
php artisan db:seed
を実行
ここまでやると、ダミーで作ったメールアドレスとパスワード=password123
でログインできるようになる
※1.のコード
userFactory.php
public function definition(): array
{
+ $plainPassword = 'password123'; // 平文のパスワードをあらかじめ指定してしまう
+ $hashedPassword = bcrypt($plainPassword); // 平文のパスワードをハッシュ化
return [
'name' => fake()->name(),
'email' => fake()->unique()->safeEmail(),
'email_verified_at' => now(),
- //'password' => static::$password ??= Hash::make('password'),
+ 'password' => $hashedPassword, // パスワード
+ 'role_id' => $this->faker->numberBetween(1, 4), // 1~4のランダムな整数
'remember_token' => Str::random(10),
];
}
※2. のコード
DatabaseSeeder.php
public function run(): void
{
\App\Models\User::factory(10)->create(); //コメントアウトを外す
}
ダミーデータ作成でのトラブルった場合、下記をやってみると解消するかと思います
・php artisan migrate:fresh
を実行
・php artisan migrate
を再度実行
次回②はロール権限毎にルーティング