Я все еще работаю над своим проектом ACL, и мне нужны некоторые идеи для следующей проблемы:
Я использую MySQL для хранения своих пользователей, ролей и разрешений. Сначала я создал поле «parent_id» в своих ролях TABLE и пытался через него управлять разрешениями каждого пользователя. Это вроде как работало, пока я не понял, что если я добавлю новую роль, будет очень сложно управлять иерархией и контролировать, кто имеет доступ к какому ресурсу. Я провел несколько поисков и понял, что использовать реляционную базу данных для работы с иерархией очень сложно, поэтому я отказался от иерархии.
Мне нужна ваша помощь, чтобы найти лучшее решение для управления созданием пользователей: у меня есть 4 разных пользователя: SuperAdmin, CustomerAdmin, Technician, client. Когда я нахожусь на странице создания новых пользователей, я не хочу, чтобы технический специалист создавал нового пользователя типа CustomerAdmin или SuperAdmin, например.
Я думал о том, чтобы позволить только суперадминистратору создавать нового пользователя, но одно из моих ограничений заключается в том, что я должен позволить администратору клиента также создавать пользователей, а также техников.
Пытаясь быть более назидательным, суперадмином могу быть я. Администратор клиента — мой клиент, и у него есть предприятие. На своем предприятии он может создать 2 типа пользователей: техников и клиентов.
Это всего лишь пример, но если я хочу создать новую роль, дающую ему новые разрешения, я должен найти способ лишить его разрешения на создание более могущественного пользователя, чем он.
Я не уверен, был ли я объективен в своем вопросе, но любой, кто может поговорить об этом со мной, буду рад.