@azmarin

Как исключить из формы определенную группу пользователей?

Есть категория пользователей "фотолюбитель". Есть каталог в котором куча других категорий, в фильтре есть возможность выбрать категорию, так вот хочу убрать из фильтра категорию пользователей "фотолюбитель"
1. В форме фильтра категории выводятся вот так
{!! Form::select('category_id', $categories->lists('name', 'slug')->prepend('..', ''), $category ? $category->slug : null, ['id' => 'category_id', 'class' => 'form-control js-change-fields']) !!}

Как исключить из этой формы нужную мне категорию - ума не приложу.

Вопрос второй. Предположим исключить из фильтра получилось... Но зайти в категорию /fotolyubitel/ всё равно можно
2. Как закрыть доступ всем к разделу /fotolyubitel/ ?

Вопрос 3й. У каждой категории пользователей, точнее у всех авторизованных (зарегистрированных) на сайте есть дополнительное меню в котором:
1. Моя страница - отображает страницу профиля
2. Мои фотоработы - отображает все загруженные работы
3. Загрузить фото - страница с загрузкой работ
4. Баланс - пополнение баланса

Вопрос в том - как ограничить определенной категории пользователей доступ к этим разделам? И скрыть для этой же категории пункты меню.
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 4
@Yan-s
1 - Вопрос не понятен. Вы можете удалить категорию из бд, можете фильтрвать на уровне запроса к бд, удалить из коллекции или массива. Смотря что вам требуется.

Пункты 2 и 3 - авторизация. В доке прекрасно описано.
Ответ написан
$categories->filter(function ($category) {
    return $category->name != "фотолюбитель";
});

Вернет все категории, за исключением "фотолюбитель"
Ответ написан
@VitaliyBorys
На первый вопрос вам уже предложили много вариантов.

Второй и третий вопрос решается путем регистрации пользователей.

Создайте таблица user , role и role_user . Последняя имеет связь много ко многим. Один пользователь в теории может иметь несколько ролей. Опишите метод hasRole($role), который будет возвращать true, если у пользователя есть группа $role и false в ином случай. И с этим вы можете закрыть доступ к чему угодно и кому угодно.
Ответ написан
@azmarin Автор вопроса
Yan-s, В общем, первый вопрос решил
$categories->lists('name', 'slug')->prepend('..', '')->except(['17', 'fotolyubitel'])


3й вопрос решил:
@if(Auth::user()->category_id == 17)
не видно меню
@else
всем остальным видно
@endif


с 2м вопросом:
как закрыть доступ к разделу всем кроме админа
и
как закрыть группе пользователей category_id == 17 к определенным разделам

я так и не понял...
Ответ написан
Ваш ответ на вопрос

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

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