Политика Laravel всегда возвращает false

Я создал политику, и добавить метод просмотра:

public function view(User $user, Contact $contact)
{
return $user->id === $contact->manager;
}

Тогда я зарегистрировал это:

protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
Contact::class => ContactPolicy::class,
];

И тогда я попытался использовать его с помощником контроллера:

public function view($id)
{
$contact = Contact::find($id);
$user = Auth::user();

$this->authorize('view', $contact);

return view('contact.edit')->with('contact', $contact);
}

И промежуточное ПО:

Route::get('/contact/edit/{id}', 'EditContactController@view')->middleware('can:view,contact');

Но я всегда получаю ошибку 403.
contact-> manager и user-> id совпадают.
Также схема контактной таблицы:

CREATE TABLE `contacts` (
`id` int(11) NOT NULL,
`first_name` varchar(25) NOT NULL,
`last_name` varchar(25) NOT NULL,
`email` varchar(35) NOT NULL,
`home_phone` int(10) DEFAULT NULL,
`work_phone` int(10) DEFAULT NULL,
`cell_phone` int(10) DEFAULT NULL,
`best_phone` enum('home_phone','work_phone','cell_phone') NOT NULL,
`address_1` varchar(100) DEFAULT NULL,
`address_2` varchar(100) DEFAULT NULL,
`city` varchar(35) DEFAULT NULL,
`state` varchar(35) DEFAULT NULL,
`zip` int(6) DEFAULT NULL,
`country` varchar(35) DEFAULT NULL,
`birth_date` date DEFAULT NULL,
`manager` int(11) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

0

Решение

Я только что заменил

protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
Contact::class => ContactPolicy::class,
];

с

protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
'App\Contact' => 'App\Policies\ContactPolicy',
];

и теперь это работает с $this->authorize('view', $contact);, но промежуточное ПО все еще возвращает 403

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]