2017-06-02 175 views
0

我有一個策略,用於檢查經過身份驗證的用戶是否可以刪除顧問。Laravel策略返回未經授權

不幸的是,答覆總是未經授權,我不確定爲什麼!

政策功能(ClinicConsultantPolicy):

public function delete(User $user, Consultant $consultant) 
    { 
     $consultant_clinic_id = $consultant->clinic_id; 
     return $user->clinic->id === $consultant_clinic_id; 

    } 

控制器調用上面的函數(ClinicConsultantController):

public function destroy($id) 
    { 
     $consultant = Consultant::find($id); 
     $this->authorize('delete', $consultant); 

     Consultant::find($id)->delete(); 

     return redirect('clinic/consultants'); 
    } 

如果我輸出的兩個變量的政策嘗試匹配(用戶診所ID和顧問診所ID)都等於2.

但是,很顯然,其中的一個在達到政策時或者不是2,或者可能是未定義的,但我不確定爲什麼?非常感謝您的幫助。

+1

您是否註冊了保單?嘗試在刪除策略中添加dd($ user-> clinic-> id,$ consultant-> clinic_id)'以驗證它是否被調用並檢查值。 – Sandeesh

+0

你說得很對,我忘了註冊政策!這樣的疏忽!非常感謝@Sandeesh。 – Ben

回答

0

對我來說,看起來像一個模型關係問題,當調用$user->clinic->id。如果您提供關係實施,這將非常有幫助。如果您的關係設置爲一對多,我只能建議編寫 $user->clinic()->first()->id。歡呼聲

相關問題