Каков наилучший способ добавить родительскую группу в группы пользователей при замораживании пользователей?

Я новичок здесь, и это мой первый вопрос.
Прежде всего, я прошу прощения за мой плохой английский.
Я хотел бы создать приложение, используя userfrosting 0.3.0, где:

  • Любой незарегистрированный может создать супер группу (например, компанию)
  • В это время создается пользователь-администратор, отличный от root, но он может только читать информацию из супергруппы (администраторы не могут видеть другие компании).
  • Администраторы могут организовать ваших пользователей в группы пользователей, но только root может создавать группы и изменять разрешения.

Я благодарю вас за ваше время.

2

Решение

UserFrosting, начиная с версии 0.3.1, не имеет встроенной поддержки иерархий групп. Тем не менее, это должно быть довольно легко реализовать. Вот как я бы это сделал:

  1. Создайте две группы: «Администраторы» и «Участники». Настройте его так, чтобы «Администратор» был основная группа по умолчанию для новых пользователей.
  2. Создать две таблицы, company а также company_user, company Таблица будет хранить информацию о компаниях, с первичным ключом id, company_user Таблица будет связывать компании с пользователями и иметь четыре столбца:
    • id (Целое)
    • company_id (Целое)
    • user_id (Целое)
    • flag_admin (BOOL)

Изменить register() метод в AccountController.php так что, когда кто-то регистрируется, он создает новую компанию, а затем связывает их с этой компанией, помечая их как Администратора этой компании, устанавливая flag_admin до «1».

Любые участники, которые добавляются в определенную компанию, также должны быть добавлены в эту таблицу, но с flag_admin установить на «0».

  1. Создать новый AccessCondition называется manages(user_id_1, user_id_2) который возвращается true если user_id_1 а также user_id_2 принадлежат к одной компании а также user_id_1 имеет flag_admin установить на «1», false иначе.

  2. Предоставьте соответствующие разрешения пользователям в группе «Администраторы», чтобы они могли создавать / обновлять / удалять / просматривать пользователей, но только пользователей в группе «Участники» и только в том случае, если администратор manages их (поэтому, если «Members» имеет group_id «4», условие =in_group(user.id,4)&&manages(self.id,user.id),

  3. Вы также захотите изменить различные методы создания / обновления / удаления пользователей, чтобы при создании администратор добавлял их в группу «Член» и связывал их с соответствующей компанией.

Это должно помочь вам начать, дайте мне знать, если вам нужны дальнейшие разъяснения.

0

Другие решения

Других решений пока нет …