Я создал политику с помощью php artisan make: policy StudentPolicy --model = Student. В этой политике у вас есть метод view и viewAny. Когда я проверяю это, обычно viewAny применяется к index () и view к show (), но работает только политика представления, viewAny не имеет никакого эффекта. Мы все еще можем получить доступ к странице localhost / student
Если мы устанавливаем возвращаемое значение в viewAny в false или true. Это не имеет никакого эффекта.
Вывод из php artisan route: список, как показано ниже.
| | POST | student | student.store | App\Http\Controllers\StudentController@store | web,can:create,App\Models\Student
| | GET|HEAD | student | student.index | App\Http\Controllers\StudentController@index | web
| | GET|HEAD | student/create | student.create | App\Http\Controllers\StudentController@create | web,can:create,App\Models\Student
| | GET|HEAD | student/{student} | student.show | App\Http\Controllers\StudentController@show | web,can:view,student
| | PUT|PATCH | student/{student} | student.update | App\Http\Controllers\StudentController@update | web,can:update,student
| | DELETE | student/{student} | student.destroy | App\Http\Controllers\StudentController@destroy | web,can:delete,student
| | GET|HEAD | student/{student}/edit | student.edit | App\Http\Controllers\StudentController@edit | web,can:update,student
AuthServiceProvider
protected $policies = [
// 'App\Model' => 'App\Policies\ModelPolicy',
Student::class => StudentPolicy::class,
];
StudentPolicy
public function viewAny(User $user)
{
//
return in_array('view.student.all', $user->rights()->pluck('description')->toArray());
}
/**
* Determine whether the user can view the student.
*
* @param \App\Models\User $user
* @param \App\Models\Student $student
* @return mixed
*/
public function view(User $user, Student $student)
{
//
return in_array('view.student.all', $user->rights()->pluck('description')->toArray());
}
Studentcontroller
class StudentController extends Controller
{
public function __construct()
{
$this->authorizeResource(Student::class);
}
Если пользователь не авторизован для viewAny, он может не иметь доступа к localhost / student, ему нужно показать неавторизованную страницу.