관리자 패널에서 결국 다른 형식의 인증을 지정해야함( 유저별 또는 레벨별)

리소스의 어느 부분을 액세스 할 수 있는지 방법을 알아본다.

https://nova.laravel.com/docs/2.0/resources/authorization.html#authorization


1. 권한부여를 생성한다.

1
php artisan make:policy PostPolicy -m Post
cs


Policies 에 PostPolicy.php 파일이 생성되었다.


2. 상단에 모델을 임포트하고 있다.

1
2
use App\Post;
use App\User;
cs


3. app/Providers/AuthServiceProvider.php 파일에 네모박스를 재정의 해주자 'App\Post' => 'App\Policies\PostPolicy'


4. Policies/PostPolicy.php 파일에서 정의하자


사이드바에서 보이게 하기

1
2
3
4
    public function viewAny(User $user)
    {
        return true;
    }
cs


[참고사항]

id 4번 안보이게 하기

1
return $post->id !==4;
cs

admin유저만 적용

1
return $user->is_admin;
cs



디테일뷰 보이게하기

1
2
3
4
    public function view(User $user, Post $post)
    {
        return true;
    }
cs



글 작성하게 하기

1
2
3
4
    public function create(User $user)
    {
        return true;
    }
cs



해당메서드에 입력해주면 활성화가 된다.

1
return true;
cs


5. 만약 해당글 작성 유저만 보이게 하려면 이렇게 하면 된다. Nova/Post.php

1
2
3
4
    public static function indexQuery(NovaRequest $request, $query)
    {
        return $query->where('user_id', $request->user()->id);
    }
cs

부분을 소스에 넣으면 된다.


내가 작성한 글만 보이게 된다.


'라라벨 > NOVA' 카테고리의 다른 글

필터 및 렌즈 (nova Filters and Lenses)  (0) 2020.01.02
수색(Searching)  (0) 2020.01.02
자원(resource)의 검증(vaildation)  (0) 2020.01.01
자원의(resource) 관계(Relationships)  (0) 2020.01.01
자원(resource)의 분야 field  (0) 2019.12.31

+ Recent posts