вы правы, в движке приложения нет встроенной поддержки пользовательских ACL-списков или разрешений, и несколько быстрых веб-поисков не сразу обнаружили очевидные библиотеки с открытым исходным кодом.
как реализовать полноценные разрешения и ACL для совместного использования групп, безусловно, нетривиальный вопрос проектирования. здесь есть ряд других вопросов.
сказав, что, как очень грубый первый проход, вы, вероятно, на правильном пути с хранением списков пользователей. Я бы посоветовал вам абстрагировать список от отдельных групповых объектов и вместо этого прикрепить их к данным, чтобы пользователи могли определять группы один раз, а не для каждого фрагмента данных. я также рассмотрю возможность хранения отдельных списков групп, которые могут читать и писать. наконец, я бы хранил Свойства пользователя в объектах группы вместо строковых имен пользователей или адресов электронной почты.