@Meefril

Как правильно реализовать авторизацию, проверку на «роли»?

Хотелось бы узнать насколько правильна реализация ниже и какие есть другие варианты
В БД есть таблицы roles и permissions и третья roles_permissions, а так же таблица с юзерами, где есть столбец role
На фронте(vue) после авторизации посредством логина и пароля в payload JWT попадает массив со всеми permissions этого пользователя, исходя из его роли
Когда пользователь делает какое-либо действие, то апи на бэке получает его разрешения и сверяет сигнатуру токена и в случае успеха делает запрашиваемое действие.

Ещё хотелось бы узнать о том, как правильно разделять фронт для юзера и админа.
К примеру, в личном кабинете у юзера нет вкладки для перехода на страницу создания постов, а у админа она есть. Как это лучше реализовывать?
Мне на ум пришло только:
v-show на этой вкладке, который отображает её, если пользователь является админом.
  • Вопрос задан
  • 295 просмотров
Решения вопроса 1
mrsexy
@mrsexy
Senior Pomidor
Laravel, Symfony? Если без заморочек и писанины, создайте мидлвейр в котором:
if(Auth::user()->role = admin){ 
return view('admin.index'); 
} else {
return view('/')->with('error-message',  'Досвидос');
}
Можно так же повесить медвейр на роут(перед контроллером) при переходе по нужной ссылке, где вы будете сверять права. Можно так же описать сервис прав, и вызывать его в нужном месте, к примеру как @perm.

Если обыная пыха, то на фронте повесить проверку, а на бекенде написать условия для видимой области роли
<?
$user_role = $db->query->user->role;
if($user_role = admin){
// кусок видимой области
endif;
?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
profesor08
@profesor08
v-show на этой вкладке, который отображает её, если пользователь является админом.

https://router.vuejs.org/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы