@driverx18

Как реализовывается процесс сокрытия материалов от определенных пользователей?

В Instagram есть механизм такой: "скрыть историю от ", и можно скрыть свою историю от любого пользователя. Нужно на своем сайте сделать примерно тоже самое, как я понимаю корректно это реализовывается примерно так:

Таблица hide_material:
id | user_id | hide_user_id
user_id - это id пользователя, который скрывает историю
hide_user_id - Id пользователя, от которого скрывают

То есть потом выбирается в коде
SELECT hide_user_id from hide_material WHERE user_id = id пользователя какой загружает материал;

и заносится это дело в переменную $hide_ids. И потом проверка стоит, если id не входит в $hide_ids, то можно показывать материал. Или это лучше реализовать как-то по другому?
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 2
@AnneSmith
самая ленивая
пользователям устанавливаются permissions в зависимости от их роли на сайте
контент тоже делится на паблик и прайвит, или еще какие другие категории, и при выборке контента проверяется флаг контента и права доступа пользователя

посмотрите как сделана любая cms с разными правами доступа для админа, юзера и контент-менеджера
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Material:
id | material_id | ... | owner_user_id

ACL:
id | object_table_name | object_id | set_for_user_id | permission_id | allow(bool) | deny(bool) | set_by_user_id
(allow(bool) | deny(bool) - для одновременной возможности работы по "белому" и "чёрному" списку правил с возможностью их переключения;
object_table_name | object_id => (например) 'material' | 1
)


ACL_global:
id | object_table_name | permission_id | whitelist(bool) | set_by_user_id

Permission:
id | permission | description

( примеры:
1 | view | возможность просматривать
2 | comment | возможность комментировать
3 | moderate | возможность модерировать
)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы