2016-07-04 18 views
1

私はlaravel(5.2)に新しいですし、https://www.youtube.com/watch?v=Zxmf0n2sC1I&index=34&list=PLwAKR305CRO-Q90J---jXVzbOd4CDRbVxLaravel 5ユーザー権限

この偉大なシリーズを踏襲し、誰かがどのようにセットアップのユーザーのみ編集/自分の投稿を削除することができ、登録認証に正しい方向に私を指すことができます。

は、例えば:ログインしているユーザー「」私を助けるためユーザーBから

おかげ投稿を編集することはできません。

答えて

1

投稿テーブルにuser_idがある場合、そのユーザーがログインしているユーザーと同じかどうかを確認できます。例えば:

routes.phpの

​​

PostsController.php

class PostsController extends Controller{ 
    public function edit($id){ 
     $post = Post::findOrFail($id); 
     if($post->user_id !== Auth::user()->id){ 
      abort(403); 
     } 
     return view('posts.edit', $post); 
    } 
} 

EDIT:コメントで要求されたインデックス法を含む更新。

Route:get('posts', [email protected]); 
Route:get('post/{id}/edit', [email protected]); 

routes.phpの

PostsController.php

class PostsController extends Controller{ 

    public function index(){ 
     $posts = Post::all(); 
     return view('posts.index', $posts); 
    }   

    public function edit($id){ 
     $post = Post::findOrFail($id); 
     if($post->user_id !== Auth::user()->id){ 
      abort(403); 
     } 
     return view('posts.edit', $post); 
    } 

} 
+0

素晴らしいです。これは編集のために完全に機能します。しかし、私のインデックスビュー(すべての投稿がリストされている)で何かがうまくいかない。私のコードは次のようになります:public function index($ id) { // varを作成し、DBからすべてのブログ投稿を保存します。 $ posts = Post :: findOrFail($ id); if($ posts-> id!== Auth :: user() - > id){ abort(403、 'Zugriff verweigert'); } 戻るビュー( 'posts.index') - > withPosts($ posts); }そして、エラーメッセージは "PostControllerのErrorExceptionです。PHPの行23: App \ Http \ Controllers \ PostController :: index()の引数1がありません。 –

+1

慣例として、リソースのインデックスメソッドはリストに使用され、URLパラメータはありません。 '$ id'パラメータを取得し、Laravelにこのパラメータがないと言います。インデックスメソッドを含む答えを更新します。 –

0

あなたの投稿のuser_idを持っているユーザーはlogginユーザーと同じである場合、私は、あなたがチェックすることができます。コードは

PostController.php

class PostController extends Controller 
{ 
public function getUpdatePost($post_id) { 

     $post = Post::find($post_id); 
     if($post->user_id !== Auth::user()->id){ 
      abort(403); 
     } 
     return view('posts.edit',['post' => $post]); 
    } 
} 

になり、あなたのルートファイルが

Route::get('/post/{post_id}/edit', [ 
       'uses' => '[email protected]', 
       'as' => 'post.edit' 
     ]); 
1

素晴らしいものです。これは編集のために完全に機能します。しかし、私のインデックスビュー(すべての投稿がリストされている)で何かがうまくいかない。私のコードは次のようになります。

public function index($id) 
{ 
    //create a var and store all blog posts from DB   
    $posts = Post::findOrFail($id); 
    if($posts->id !== Auth::user()->id){ 
     abort(403, 'Access denied'); 
    } 

    //return a view and pass in the above var 
    return view('posts.index')->withPosts($posts); 

} 

私の見解ではエラーメッセージは次のとおりです。PostController.phpライン23でErrorException: のApp \のHttp \コントローラの引数1がありませんが(のPostController ::インデックスを\)

I私がidを取得しているインデックス($ id)をどうすればいいのか分かりません。

ありがとうございました

関連する問題