У меня есть таблица пользователей с ролью столбца для ролей пользователей со значением Enum
:
Перенос
$table->enum('role', ['Admin','author','editor']);
Я хочу, чтобы только администратор и автор имели доступ к site.com/view/problems
этой странице.
Я создал 3 промежуточных программного обеспечения на \app\http\Middleware
с этим контентом.
public function handle($request, Closure $next)
{
if ($request->user() && $request->user()->role != 'Admin') {
return new Response(view('unauthorized')->with('role', 'Admin'));
}
return $next($request);
}
и поместите их в Kernal.php
protected $routeMiddleware = [
'Admin' =>\App\Http\Middleware\AdminMiddleware::class,
'author' =>\App\Http\Middleware\authorAdminMiddleware::class,
'editor' =>\App\Http\Middleware\editorAdminMiddleware::class,
];
затем использовал их в web.php вот так
Route::get('/view/problems', function () {
//
})->middleware('Admin', 'editor');
Но когда я вошел в систему с пользователем Admin, он сказал, что вы можете получить доступ к этой странице с пользователем Автор.
И когда я вошел в систему с пользователем author, он говорит, что вы можете получить доступ к этой странице с пользователем admin.
Я хочу, чтобы при входе в систему с ролью пользователя Администратор или Автор мог получить доступ к этой странице. И когда я вошел в систему с помощью редактора, не могу получить доступ к этой странице.
Я также использовал группы промежуточного программного обеспечения. И похоже, что раньше.
Как я могу это сделать ?