laravelパーミッション
更新日 2023-12-13 17:47:59
laravel
インストール
composer require spatie/laravel-permission
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"
マイグレーション
マイグレーションでパーミッション関連テーブルを作成
php artisan migrate
ユーザーモデルにロールのトレイトを追加する
app/User.php
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Spatie\Permission\Traits\HasRoles; // 追加
class User extends Authenticatable
{
use Notifiable;
use HasRoles; // 追加
ロールの作成
roleのseederを作成する
php artisan make:seeder RoleTableSeeder
database/seeds/RoleTableSeeder.php
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
class RoleTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
Role::create(['name' => 'admin']);
}
}
ユーザーにロールを紐づける
userのseederを作成する
php artisan make:seeder UserSeeder
database/seeds/UserSeeder.php
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
use App\User;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$user = User::find(1);
$user->assignRole('admin');
}
}
ミドルウェアの設定
app/Http/Kernel.php
protected $routeMiddleware = [
'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
];
ルートにロールの制御をかける
Route::group(['middleware' => ['role:admin']], function() {
// 処理
});