Ich habe eine Richtlinie, die überprüft, ob der authentifizierte Benutzer einen Berater löschen kann.Laravel-Richtlinie wird nicht autorisiert zurückgegeben
Leider ist die Antwort immer nicht autorisiert, und ich bin mir nicht sicher warum!
Richtlinienfunktion (ClinicConsultantPolicy):
public function delete(User $user, Consultant $consultant)
{
$consultant_clinic_id = $consultant->clinic_id;
return $user->clinic->id === $consultant_clinic_id;
}
-Controller die obige Funktion aufrufen (ClinicConsultantController):
public function destroy($id)
{
$consultant = Consultant::find($id);
$this->authorize('delete', $consultant);
Consultant::find($id)->delete();
return redirect('clinic/consultants');
}
Wenn ich Ausgang die beiden Variablen die Politik zu entsprechen versucht (Benutzer-Klinik-ID und die Klinik-ID des Beraters), beide gleich 2.
Allerdings ist einer von ihnen entweder nicht 2 oder vielleicht nicht definiert, wenn er die Richtlinie erreicht, aber ich bin mir nicht sicher warum? Vielen Dank für deine Hilfe.
Haben Sie die Politik registriert? Fügen Sie 'dd ($ user-> clinic-> id, $ consultant-> clinic_id)' in die Löschrichtlinie ein, um zu überprüfen, ob sie aufgerufen wird, und um die Werte zu überprüfen. – Sandeesh
Sie hatten recht, ich habe vergessen, die Politik zu registrieren! Solch ein Versehen! Vielen Dank @Sandesh. – Ben