2017-01-17 13 views
0

ユーザー、ファイル、file_projectという3つのテーブルがあります。 各ファイルにはuser_idがあります。Laravel - ポリシーの複数の値 - BelongsToMany

管理者はすべてのファイルを削除できますが、アップロードしたファイルのみを削除できます。

view.blade.php

enter image description here

ファイルテーブル

enter image description here

file_pro JECTテーブル

enter image description here

私はこれらを取得し、フォーム提出後:

[ 
    "23", 
    "22", 
    "24" 
] 

だから、今、私はコントローラーからファイルを削除することができます。 これはコントローラである:私はポリシーを使用して、複数のIDを確認することができますどのように

public function deleteSelected (Request $request) 
{ 
    $files = $request->files; 
    File::destroy($files); 

    return redirect()->back(); 
} 

私は今、$ファイルから

public function deleteSelected (Request $request) 
{ 
    $files = $request->files; 
    return $list = File::find($files); 
} 

をIDを使用して、ファイルテーブルからレコードを識別することができ、応答は次のとおりです。

enter image description here

任意のヘルプ?

ありがとうございます!

答えて

0

あなたが権限を持つユーザーのみが、次を使用することができ、ファイルを削除できるようにしたい場合は:その後、

public function deleteSelected (Request $request) 
{ 
    $files = $request->files; 
    $loggedInUser = Auth::user(); 
    if(!$loggedInUser->isAdmin() || File::whereIn('id', $files)->where('user_id', $loggedInUser->id)->count() < count($files)) { 
     abort(403); 
    } 
    File::destroy($files); 

    return redirect()->back(); 
} 

そして、あなたのユーザーモデル

にisAdminのためのロジックを追加
関連する問題