回答編集履歴

1

具体的なソースを提示

2018/03/01 01:39

投稿

workr
workr

スコア158

test CHANGED
@@ -7,3 +7,63 @@
7
7
 
8
8
 
9
9
  詳しくはマニュアルにそのもののサンプルが書かれているので省略しますが、Policy ファイルを作って update() 時に記事の編集許可がない場合は拒否するようにすれば実現できると思います。
10
+
11
+
12
+
13
+ ---
14
+
15
+ 追記
16
+
17
+
18
+
19
+ 小規模なものであれば Policy クラスを作成しなくても構いません。
20
+
21
+
22
+
23
+ App\Providers\AuthServiceProvider
24
+
25
+
26
+
27
+ ```
28
+
29
+ public function boot()
30
+
31
+ {
32
+
33
+ $this->registerPolicies();
34
+
35
+
36
+
37
+ Gate::define('update-post', function ($user, $post) {
38
+
39
+ // 記事の作成者IDとログインユーザーのIDが一致するか調べる
40
+
41
+ return $user->id == $post->user_id;
42
+
43
+ });
44
+
45
+ }
46
+
47
+ ```
48
+
49
+
50
+
51
+ コントローラーの各種メソッド内
52
+
53
+
54
+
55
+ ```
56
+
57
+ $post = DB::table('posts')->where('id', '=', $id)->first();
58
+
59
+
60
+
61
+ if(Gate::denies('update-post', $post)) {
62
+
63
+ // 許可がなかった場合の処理
64
+
65
+ abort(403, 'Forbidden');
66
+
67
+ }
68
+
69
+ ```