Есть необходимость ввести в программу (она будет позволяет копировать строго определенные файлы по сети) модуль разграничения прав доступа. Например, для одних групп пользователей назначить права на копирование одних файлов, для вторых групп — других. Причем, с возможностью редактирование самих пользователей.
Программа пишется на C++. Была ли у кого-либо подобная задача? Как реализовали? Где хранили политики (группы, пользователи)? В БД? Или в зашифрованных файлах?
Признателен был бы за концепцию и/или библиотеки с подобным функционалом.
Нет, модуля аутентификации нет. Программа — обычное GUI на Visual С++. Для разных пользователей должны быть разные права доступа. Суть проста: при запуске программы возникает окно с просьбой ввести имя и пароль. Вот только пароли и имена не должны храниться в самой программе. Вопрос в том, как это грамтнее сделать. Добавлю, что программ несколько, и они все должны по единому принципу авторизовывать пользователей.
Ну сделай модуль авторизации, который будет отдавать указатель на юзера, а во всех модулях, которые зависят от юзера передавать его по указателю. А как сделать сам acl подумай, нужна ли гибкость или нет.
Вариант 1: всё-таки использовать средства ОС, программа запускается по дефолту от имени текущего пользователя и можно легко средствами ОС управлять доступом на уровне ФС (в NTFS встроенные ACL — у вас ведь винда, судя по Visual? )
Вариант 2: сделать объект/иерархию объектов реализующих юзеров и ACL в отдельной подключаемой библиотеке, способ хранения инфы можно (и нужно) инкапсулировать, начать, например, с простых текстовых файлов, а затем, если нужно будет, перейти на БД, просто заменив дллку (общую для всех прог). А по идее такая дллка должна быть в винде/стандартных библиотеках visual c++, чтобы использовать внутри (а не запуск от имени) приложения стандартные средства ОС