Policy 자동 적용 free

2019-08-28

Policy는 벨이 제공하는 인가 방입니다. 어떤 리소스에 대해 현재 사용자가 어떤 권한이 있는지를 판단하는 기능이죠. 아마도 벨로 개발하시는 분이면 대부분 사용하시지 않을까 싶습니다. 기존에는 Policy를 작성하고 나서 AuthServiceProvider 에 등록을 해줘야 했습니다.


Policy를 생성하고


php artisan make:policy PostPolicy --model=Post

작성한 다음


use App\User;
use App\Post;

class PostPolicy
{
public function update(User $user, Post $post)
{
return $user->id === $post->user_id;
}
}

서비스 프로바이더에 등록하는 것이죠.


use App\Post;
use App\Policies\PostPolicy;

class AuthServiceProvider extends ServiceProvider
{
protected $policies = [
Post::class => PostPolicy::class,
];

벨 5.8 부터는 서비스 프로바이더에 등록하지 않아도 자동으로 찾아서 적용해주는 기능이 추가되었습니다. 단, 규칙에 맞게 작성해야 합니다. 규칙은 Policy를 만들 때 app/Policies 디렉터리에 {모델명}Policy로 만들어야 합니다. 이 규칙에 맞지 않게 작성한 Policy만 서비스 프로바이더에 등록해서 쓰면 되겠네요. 편해졌어요!


1 1 벨 42호
2019년 8월 28



이현석

메쉬 코리아 개발자. 바쁜 팀장님 대신 알려주는 신입 PHP 개발자 안내서를 쓰고, 클린 아키텍처 인 PHP를 번역했습니다. 2020년에 출간될 Laravel Up & Running 2nd Edition을 번역하고 있습니다.