J'implémente des rôles et des permissions pour un projet, et j'utilise des politiques, mais j'ai un problème quand je veux autoriser ou non la création de nouveaux enregistrements dans la table des patients, très simple des trucs. J'ai dans mon PatientPolicyProblèmes avec la politique de création dans Laravel 5
// Only the users with root or admin roles can create patients;
public function create(User $user){
return ($user->hasRole('root') || $user->hasRole('admin'));
}
// only the patient creator can edit the patient and see the edit button
public function update(User $user, Patient $patient){
return $user->id == $patient->user_id;
}
AuthServiceProvider
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
'App\Patient' => 'App\Policies\PatientPolicy'
];
PatientController
public function edit(Patient $patient){
if(Gate::denies('update', $patient)){
abort(403, 'No esta autorizado de estar aqui');
}
return view('patients.edit', compact('patient'));
}
public function create(){
if(Gate::denies('create')){
abort(403, 'Usted no esta autorizado para crear pacientes');
}
return view('patients.create');
}
et dans mes vues
@can('create')
<li class="header">PROCESOS</li>
<li><a href="/paciente/create"><i class="fa fa-book"></i> <span>Apertura de Historia Clínica</span></a></li>
@endcan
Le problème est que le CREA La politique retourne toujours false même pour les utilisateurs supposés être autorisés à effectuer l'action, mais la politique d'édition fonctionne parfaitement. Est-ce que je manque quelque chose?
double possible de [Comment définir une méthode de politique sans argument dans Laravel 5.2?] (http://stackoverflow.com/questions/37242321/how-to-define-a-policy-method-with-no-argument-in-laravel-5-2) –