7

Tôi có mã sau trong lớp Yêu cầu để kiểm tra xem người dùng có được phép thực hiện cập nhật hay không.Có thể cho phép phương thức trong Yêu cầu trả lại tin nhắn tùy chỉnh cho HandlesTính năng xác thực?

HandlesAuthorization trait, theo mặc định cung cấp thông báo mặc định. Có cách nào để trả lại tin nhắn tùy chỉnh không? Tôi đã thấy phương thức ủy quyền trong Request class chỉ có thể return boolean giá trị.

class UpdateRoleRequest extends Request 
{ 
    private $UserPermissionsSession; 

    public function __construct(IRole $Role) { 
     $this->UserPermissionsSession = new UserPermissionsSession(); 
    } 

    public function authorize() { 
     $UserID = \Auth::user()->UserID; 
     return $this->UserPermissionsSession->CheckPermissionExists($UserID); 
    } 

} 
+0

bạn có thể thực hiện phương pháp failedAuthorization theo yêu cầu – honarkhah

Trả lời

2

Tôi tin rằng bạn không nên xem xét đặc điểm HandlesAuthorization. Tất cả những gì bạn cần làm là thực hiện phương thức failedAuthorization trong lớp yêu cầu của bạn.

Trong FormRequest lớp nó được định nghĩa như thế này:

/** 
* Handle a failed authorization attempt. 
* 
* @return void 
* 
* @throws \Illuminate\Auth\Access\AuthorizationException 
*/ 
protected function failedAuthorization() 
{ 
    throw new AuthorizationException('This action is unauthorized.'); 
} 

vì vậy tất cả bạn cần là để ghi đè phương pháp này trong lớp UpdateRoleRequest của bạn ví dụ như thế này:

protected function failedAuthorization() 
{ 
    throw new \Illuminate\Auth\Access\AuthorizationException('User has to be an admin.'); 
} 
Các vấn đề liên quan