2017-01-17 3 views
0

사용자, 파일 및 file_project라는 세 개의 테이블이 있습니다. 각 파일에는 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" 
] 

그래서, 지금은 컨트롤러에서 파일을 삭제할 수 있습니다. 이 컨트롤러입니다 : 내가 정책을 사용하여 여러 식별자를 확인할 수있는 방법

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의 논리를 추가 모델

관련 문제