В целях обучения я хочу использовать динамические роли пользователей в своем приложении. Например, супер администратор может создавать новых пользователей, а также создавать новые роли и назначать роли пользователям. Сейчас я придумал следующее:Laravel динамически назначает роли пользователей
Маршруты:
Route::group(['middleware' => ['admin:4']], function()
{
Route::get('/admin', '[email protected]');
});
Route::group(['middleware' => ['admin:9']], function()
{
Route::get('/admin/users', '[email protected]');
});
В этом примере, целое число является роль пользователя. 9 будет самым высоким. Проверьте мои межплатформенный:
Администратора межплатформенный:
public function handle($request, Closure $next, $role)
{
if ($request->user()->role >= $role)
{
return $next($request);
}
return redirect('home');
}
Проверяется, если пользователь имеет роль «4» или выше, при желании получить доступ к /admin
маршрута. Если это так, у них есть доступ, если нет, они вернутся к /home
.
Вышеупомянутые работы, но главная проблема заключается в том, что роли пользователя жестко закодированы в моих маршрутах. Есть ли способ передать параметры для промежуточного программного обеспечения динамически? Если да, это все, что мне нужно. Поэтому любые указатели были бы полезны.
PS. Я проверил еще один вариант, который, я думаю, будет лучше, но не уверен. Также используйте таблицу ролей рядом с сводной таблицей, а затем назначьте различные роли пользователю. Поэтому я мог бы, например, использовать поле множественного выбора, чтобы назначать разные роли одному пользователю. И затем в моем промежуточном программном обеспечении проверьте, имеет ли этот конкретный пользователь роль, необходимую для доступа к этой конкретной странице. Тем не менее, такая же проблема, как бы я мог динамически проверять свое промежуточное ПО, какую роль нужно для конкретной страницы? В моем разделе admin я хочу иметь возможность назначать разные роли для каждой страницы. Есть предположения?
вместо жесткого кодирования числа ролей, просто извлечь их из БДА (использование кэширования для производительности), и чем проверка против правила пользователя –
я на самом деле просто подумал о том, что да, я не сделал много с промежуточным слоем еще не так я не был» я уверен, как это сделать, но это довольно просто. Спасибо за ваш комментарий :) – Hardist
Middleware будет работать, но вы также должны проверить это, если используете Laravel 5.1+ https://laravel.com/docs/5.1/authorization –