Результаты поиска, фильтрация по правам доступа - PullRequest
0 голосов
/ 06 июня 2011

Я успешно выполнил поиск мастера своих клиентов, и он выполняет поиск по всему мастеру клиентов.

У меня есть агенты, которые выполняют поиск. Учетные записи клиентов связаны с агентами. Мне нужно ограничить поиск клиентами, связанными с агентом (который вошел в систему).

Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 06 июня 2011

Вам нужно будет охватить ваши данные и ваши операторы SQL текущего пользователя.

Например, допустим, у вас есть таблица продаж и таблица пользователей. Функционально каждая продажа принадлежит пользователю. Таким образом, таблица продаж должна иметь внешний ключ, такой как user_id, который идентифицирует для каждой строки продажи строку в таблице пользователей, к которой относится эта продажа.

Тогда при поиске по продажам всегда следует добавлять "где user_id =?" в качестве первого фильтра вашего оператора SQL, прежде чем другие динамические фильтры, заменив? с идентификатором текущего вошедшего в систему пользователя.

Таким образом, все критерии фильтрации при поиске в таблице продаж сначала будут применены к текущему зарегистрированному пользователю. Если критерии фильтра в противном случае будут выбирать чьи-либо строки продаж, он больше не будет делать это из-за фильтра user_id.

Если у вас есть продажи, которые относятся ко всем агентам, помимо тех, которые относятся к конкретным агентам, у них, вероятно, будет какой-то маркер, либо agent_id 0, либо, возможно, NULL, либо какое-либо другое поле, которое идентифицирует их как доступные для поиска всеми. Это можно легко вставить в первый фрагмент WHERE в операторе SQL с соответствующими скобками, чтобы сохранить его вместе:

WHERE (agent_id = ? or agent_id IS NULL) AND other dynamic filter etc
WHERE (agent_id = ? or agent_id = 0) AND other dynamic filter etc
WHERE (agent_id = ? or all_agents_flag = 1) AND other dynamic filter etc
1 голос
/ 07 июня 2011

Похоже, вам нужно LEFT JOIN.Почему бы вам LEFT JOIN таблицы, которые под вопросом.Например: заказы, торговые агенты, клиенты ...

Может просто сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...