2017-01-17 2 views
0

J'ai trois tables: users, files et file_project. Chaque fichier a un user_id.Laravel - Valeurs multiples de politique - BelongsToMany

L'administrateur peut supprimer tous les fichiers, mais uniquement l'utilisateur les fichiers qu'il a téléchargés.

view.blade.php

enter image description here

table de fichiers

enter image description here

file_pro Table Ject

enter image description here

Après avoir soumis le formulaire que je reçois ces:

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

Donc, maintenant je peux supprimer les fichiers du contrôleur. Ce est le contrôleur:

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

    return redirect()->back(); 
} 

Comment puis-je utiliser les stratégies et vérifier plusieurs ids?

Je peux maintenant identifier les enregistrements de la table de fichiers, en utilisant les identifiants de fichiers $

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

Et la réponse est:

enter image description here

Toute aide?

Merci!

Répondre

0

Si vous souhaitez autoriser uniquement les utilisateurs avec des autorisations pour supprimer le fichier que vous pouvez utiliser les éléments suivants:

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(); 
} 

Et puis ajoutez la logique pour isAdmin dans votre modèle utilisateur