Как правильно использовать политики в laravel 5.2? Я не могу

У меня проблема, я не могу использовать политики в laravel 5.2.

У меня есть 2 таблицы, ученики а также задачи.

Я пытаюсь применить политику, чтобы предотвратить редактирование задачи путем изменения URL, но я всегда получаю сообщение Это действие не авторизовано хотя задача правильного пользователя.

Код политики:

  <?php

namespace App\Policies;

use App\Models\Student;
use App\Models\Task;

class TasksPolicy
{
public function edit(Student $student, Task $tasks)
{
return $student->id === $tasks->student_id;
}
}

Код в AuthServiceProvider.php

<?php

namespace App\Providers;

use App\Models\Task;
use App\Policies\TasksPolicy;

class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
Task::class => TasksPolicy::class
];

А затем вызов в файле TaskController.php:

    public function edit($id)
{
$tasks = Task::findOrFail($id);
$this->authorize('edit', $tasks);
return view('tasks.edit', compact('tasks'));
}

Я думаю, что код хорош, потому что я несколько раз пересматривал, но, как я уже говорил ранее, я всегда получаю сообщение Это действие не авторизовано хотя задача состоит в том, чтобы редактировать пользователя.

http://i.imgur.com/2q6WFb3.jpg

Что я делаю неправильно? Как я могу правильно использовать политику?

5

Решение

вы используете «===», что означает, что и боковые данные, и тип данных будут совпадать. Возможно, ваши данные совпадают, а не тип данных, вы можете попробовать использовать «==»

public function edit(Student $student, Task $tasks)
{
return $student->id == $tasks->student_id;
}
0

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

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

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