설치
composer require spatie/laravel-permission
추가하기
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
php artisan config:clear
php artisan migrate
User Model 수정
HasRoles 추가하기
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable, HasRoles;
....
첫번째 사용자에 권한 부여하기
RolePermissionSeeder.php
# database/seeders/RolePermissionSeeder.php
<?php
namespace Database\Seeders;
use App\Models\User;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
use Illuminate\Support\Facades\Hash;
use Spatie\Permission\Models\Permission;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
class RolePermissionSeeder extends Seeder
{
// 초기 퍼미션 세팅
private $permissions = [
'role-list',
'role-create',
'role-edit',
'role-delete',
'permission-list',
'permission-create',
'permission-edit',
'permission-delete'
];
public function run(): void
{
foreach ($this->permissions as $permission) {
Permission::create(['name' => $permission]);
}
//처음 등록되어 있는 사용자를 admin 으로 규정한다.
$user = User::find(1);
// 등록된 사용자가 없으면 id:admin, pw:1111 로 생성하기
if (!$user) {
$user = User::create([
'id' => 1,
'name' => 'admin',
'email' => 'admin@example.com',
'password' => Hash::make('1111'),
]);
}
// admin 그룹을 만든다.
$role = Role::create(['name' => 'Admin']);
$permissions = Permission::pluck('id', 'id')->all();
$role->syncPermissions($permissions);
$user->assignRole([$role->id]);
}
}
<?php
namespace Database\Seeders;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
$this->call(RolePermissionSeeder::class);
}
}
php artisan db:seed
'Laravel' 카테고리의 다른 글
Laravel - 프로젝트 생성하기 (macOS) (0) | 2024.06.24 |
---|---|
Laravel - Metronic 8 / 관리자 페이지 (1) | 2024.05.05 |
Laravel - 유저권한 설정하기 Role, Permission (spatie/laravel-permission) (0) | 2024.03.11 |
Laravel - RouteServiceProvider 에 대해서 (여러개의 라우팅 파일작성하기) (0) | 2024.03.04 |
Laravel - Factory, Seeder (테스트 User 생성하기) (0) | 2024.02.12 |