Правильная система видимости контента для пользователя mysql + php?
Добрый день, стоит задача дописать существующий микро crm написанный на php + mysql. Необходимо ограничить видимость контента для пользователей, т.е. если в карточке юзера повесили что он видит только заявки из костромы, то остальные для него не отображаются и связанный контент с этими заявками он так же не видит. Система через pdo просто делает запросы в бд, какой архитектурный подход в данном случае самый правильный?
Я кроме того, чтобы исправить каждый запрос к каждому объекту в скриптах не нашёл, поэтому вышел с вопросом на площадку.
Просто смущает, что даже глобальный поиск по системе необходимо модернизировать, чтобы пользователь не видел лишнего.
Если вся система написана без разделения прав, то не исключено, что надо будет везде править.
Как делается ? - У юзеров колонка с ID группы доступа. Таблица групп с правами доступа к контроллерам определенным.
И в каждом контроллере проверка - если ли у этого ID доступ или нет.
есть отдельная таблица где есть соответствие uid - city_id.
у заявок есть таблица id_заявки = city_id.
у заявок есть например тысяча объектов у которых соотношение Id_объекта = id_заявки.
Вроде бы найти все запросы которые запрашивают заявки реально и туда встроить запрос.
Но вот каждый запрос на объект из бд, это кажется довольно непродуктивно.
Плюс есть опасения что проверка на доступ в абсолютно каждом запросе затормозят систему. Так же есть юзеры без ограничений на город, т.е. запрос усложняется.
Уже приходят дикие мысли создать промежуточную таблицу где хранить отношения юзера к каждой таблице системы и наполнять её с помощью триггеров, но так же придётся модернизировать каждый запрос, но скорость будет выше...