У меня есть сайт, встроенный в codeigniter, для которого я разработал список контроля доступа для управления разрешениями различных типов пользователей. Различные пользователи, вошедшие на сайт:
Теперь я завершил контроль доступа для этого, и разрешение на добавление, обновление, список и удаление может быть назначено каждому пользователю через модуль, доступный для Super Admin.
Теперь (это является частью нового требования клиента) Я хочу сделать столбцы доступными для определенных пользователей, например:
Если таблица продуктов имеет 4 столбца
Products :
id | Products | Price | Status
-----+-----------+-------+----------
1 | prod1 | 20.0 | 1
2 | prod2 | 35.6 | 0
Теперь я хочу, чтобы для пользователей SEO цена столбца не отображалась во время листинга.
ПРИМЕЧАНИЕ: это всего лишь пример, мне нужно сделать это динамическим, чтобы администратор контролировал, у кого есть разрешение на какой столбец. Я не могу просто написать логику If Else в моем View File, чтобы исключить ненужные столбцы.
Пожалуйста, скажите мне, как я могу сделать это без изменения всей системы или внесения очень серьезных изменений.
Ты можешь использовать ion_auth библиотека .. очень просто интегрировать и управлять пользователями и уровнями доступа …
Вот почему вы используете ACL. ACLS — это динамический способ хранения привилегий. Я надеюсь, что у вас есть модель пользователя. В этой модели вам необходимо прочитать ACL для текущего пользователя. Вы устанавливаете некоторые константы для уровня доступа, аналогично unix chmod. затем вы создаете массив, содержащий все столбцы и значение acl для этого столбца.
Для построения ваших запросов вы можете использовать такие методы, как
isSeo();
или же
hasAccess($tableName);
Конечно, это серьезное изменение, но я не знаю, как вы хотели бы реализовать списки ACL, которые изменяют ваш код.
Может быть, попробовать хранимую процедуру / функции или попробовать использовать сырой SQL, как это
GRANT SELECT(id,Products,Status) ON Products TO 'SEO User'@'somehost';