2017-07-05 6 views
0

私のlaravelアプリケーションは、ソーシャルメディアサイトです。ここに別のlaravelユーザーのプロフィールを訪問するためのルートですlaravelの非認証ユーザー権限でAuthユーザーが自分のページにアクセスするのを止めるにはどうすればよいですか?

Route::get('/dashboard/{id}', [ 
'uses' => '[email protected]', 
'as' => 'profile.index', 
'middleware' => 'auth' 
]); 

これはうまく動作します。しかし、AuthユーザーのIDをルートに入力すると、同じページに移動して自分自身を友人として追加できるバグが見つかりましたが、これは起こりたくありません。私が自分のプロフィールを訪れているなら、私はむしろ家のスクリーンに戻ってくるだろう。

はここで、コントローラの:

public function getProfile($id) 
{ 

    if(Auth::user() === $id) 
     redirect('dashboard'); 

    $user = User::where('id', $id)->first(); 

    $posts = Post::where("dash_id", "=", $user->id)->latest()->paginate(3); 
    $photos = Photo::paginate(6); 
    return view('profile.index',compact('user','posts', 'photos')); 

} 

私だけではなく、通常の非のように引き上げることが認証ユーザーのページの場合、それは代わりに「profile.index」の「ダッシュボード」にリダイレクトするために取得しようとしました-authプロファイルを使用することはできませんが、動作させることはできません。この小さなバグを修正する方法に関するアイデアはありますか?

答えて

0

あなたはAuth::user()により、ユーザーIDだけでなく、ユーザーインスタンスを取得します。インスタンスと数値を比較しています。うまくいかないだろう。ログインしたユーザーのIDを取得するには、Auth::id()またはAuth::user()->idを使用する必要があります。あなたの場合、次のコードが動作します。

public function getProfile($id) 
{ 

    if(Auth::id() == $id) 
    { 
     redirect('dashboard'); 
    } 
    else 
    { 
     $user = User::where('id', $id)->first(); 
     $posts = Post::where("dash_id", "=", $user->id)->latest()->paginate(3); 
     $photos = Photo::paginate(6); 
     return view('profile.index',compact('user','posts', 'photos')); 
    } 
} 

助けてくれたら教えてください!

+0

認証プロファイルを通常のプロファイルとして取得するのをやめましたが、リダイレクトする代わりに空白のページが表示されるようになりました。 – QuintonO14

+0

私は今それを得ました、ちょうどリダイレクトにリターンを追加しなければならなかった:)ありがとう! – QuintonO14

+0

ねえ!これはあなたが必要とする答えです。 –

0

あなたはこのコードを試し、リクエストIDに現在のユーザーオブジェクトを比較してみてください:

public function getProfile($id) 
{ 
    if(Auth::id() === $id) { 
     redirect('dashboard'); 
    } 

    $user = User::where('id', $id)->first(); 

    $posts = Post::where("dash_id", "=", $user->id)->latest()->paginate(3); 
    $photos = Photo::paginate(6) 

    return view('profile.index',compact('user','posts', 'photos')); 
} 
関連する問題