Я создаю Систему управления обучением для моего проекта последнего года обучения в университете (только недавно представленному laravel). Я установил три разные роли (администратор, инструктор и студент). Я создал два представления, к которым имеют доступ только администратор и инструктор: «Управление пользователями» и «Управление курсами». Внутри каждого администратора и преподаватель может создавать пользователей / курсы и удалять их по мере необходимости. Студент не может просматривать их или имеет доступ к ним, так что работает как нужно. Для этого я создал гейт 'manage-user' и затем передал его в промежуточное ПО.
Теперь я создал календарь, который я хотел бы просмотреть для всех ролей пользователей ... снова я создал ворота для этого ... из-за моего текущего промежуточного программного обеспечения я получаю "несанкционированный доступ", когда студент пытается посмотреть календарь .. можно ли пройти другие ворота в промежуточном программном обеспечении? Я пытался сделать это безуспешно. После многих попыток проб и ошибок я привел здесь вопрос, надеясь, что смогу это выяснить ... Я вставлю свой код ниже ... любая помощь приветствуется.
AuthServiceProvider. php
public function boot()
{
$this->registerPolicies();
//User Management
Gate::define('manage-users', function($user){
return $user->hasAnyRoles(['admin', 'instructor']);
});
//Calendar
Gate::define('manage-calendar', function($event){
return $event->hasAnyRoles(['admin', 'instructor', 'student']);
});
web. php
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::namespace('Admin')->prefix('admin')->name('admin.')->middleware('can:manage-users')->group(function(){
//Users
Route::resource('/users', 'UsersController', ['except' => ['show']]);
//Courses
Route::resource('/courses', 'CoursesController', ['except' => ['show']]);
Route::get('events', 'EventsController@index')->name('events.index');
Route::post('/addEvents', 'EventsController@addEvent')->name('events.add');
});
Я понимаю, что проблема заключается в пользователях управления шлюзами, которые я определил .. Я не уверен, каким образом go об этом защитит мои другие маршруты от студентов и преподавателей ...
Заранее спасибо:)