[라라벨 8] ACL - spatie permission
permission은 spatie에서 만든 ACL기능을 하도록 해준다.
코끼리쿤한테 물어보면 둘다 잘 대답해주는데,
- permission
https://packagist.org/packages/spatie/laravel-permission
spatie/laravel-permission - Packagist
README Associate users with permissions and roles Sponsor If you want to quickly add authentication and authorization to Laravel projects, feel free to check Auth0's Laravel SDK and free plan at https://auth0.com/developers. Documentation, Installation, an
packagist.org
인스톨이나 뭐 그런건 대략 따라하면 되고,
혹시 몰라서 가져옴. 보고싶으면 더보긔!
https://www.lesstif.com/php-and-laravel/laravel-role-permission-acl-106857730.html
Laravel Role 과 Permission 으로 ACL 관리하기
여러 Permission 을 Role 로 묶고 Role 을 User 별로 할당하는 것이 관리가 더 용이하므로 권장하고 있습니다.
www.lesstif.com
쨘!!!
은혜로운 형제님께서 다 만들어 두셨다는 점!
그리고 나의 샘플코드 is go!
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
$user = User::find(230035);
var_dump($user->roles()->get());
$role = Role::create(['name' => 'user']);
$user->assignRole($role);
dd($user->roles()->get());
길지만, 이렇게 나온다. 이미 admin은 아까 테스팅 할때 있어서, 이미 있는거고, user가 이번에 새로 생성 된거.
퍼미션도 똑같다. 샘플코드 ㄱㄱ
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
$user = User::find(230035);
var_dump($user->permissions()->get());
$permission = Permission::create(['name' => 'editor']);
$user->givePermissionTo($permission);
dd($user->roles()->get(), $user->permissions()->get());
이런식입니다. 똑같습니다.
베스트 프렉티스가 있긴한데
https://spatie.be/docs/laravel-permission/v4/best-practices/roles-vs-permissions
Roles vs Permissions | laravel-permission
laravel-permission
spatie.be
요기 보시면 되고용.
우리 시스템에도 잘 적용시킬 수 있을거 같긴한데,
자체적으로 쓰는 유저 그룹의 롤 겸 퍼미션 체크하는 부분이 있어서 다 걷어내야한다는 점.........하. 인생.
그리고 디비가 느리다면 캐싱해서 사용할 수도 있음. (정보 알려주신 은혜로운 형제님 감사합니다!)
https://spatie.be/docs/laravel-permission/v3/advanced-usage/cache