Typo3: как получить все группы пользователей для внутреннего пользователя и наоборот - PullRequest
0 голосов
/ 25 сентября 2018

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

Редактировать: я внедряю репозиторий бэкэнд-пользователя в свой контроллер

/**
 * beUserRepository
 *
 * @var \TYPO3\CMS\Extbase\Domain\Repository\BackendUserRepository
 * @inject
 */
protected $beUserRepository = null;

И получаю всех Backend-пользователей с этим утверждением:

$allUsers = $this->beUserRepository->findAll();

Iхотя я мог бы получить все группы пользователей чем-то вроде:

foreach ($allUsers as $user)
    {   
        $groups = $user->getUserGroup();
        ...
    }

Но, похоже, ничего подобного не существует.

1 Ответ

0 голосов
/ 25 сентября 2018

Существует поле таблицы базы данных be_users.usergroup, которое содержит разделенный запятыми список be_groups.uid.

Вы можете использовать это для поиска в базе данных.Часто ppl использует SQL-запрос, такой как

WHERE usergroup LIKE "<myid>,%" OR usergroup LIKE "%,<myid>,%" OR usergroup LIKE "%,<myid>" OR usergroup = "<myid>"

, чтобы проверить, содержит ли разделенное запятыми поле (хотя некоторые диалекты SQL могут иметь более простые способы).

Чтобы получитьИдея, как и где хранятся вещи из других таблиц, может помочь в просмотре файлов TCA, например, https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/core/Configuration/TCA/be_users.php#L63

По поводу вашего обновления:

https://docs.typo3.org/typo3cms/CoreApiReference/8.7/ApiOverview/BackendUserObject/ указывает на класс APIhttps://api.typo3.org/typo3cms/8/html/class_t_y_p_o3_1_1_c_m_s_1_1_core_1_1_authentication_1_1_backend_user_authentication.html, где вы можете найти некоторые функции, относящиеся к аналогичным задачам, для извлечения передового опыта.

Имейте в виду, что пользователи без прав администратора не будут иметь доступа к большому количеству информации, поэтому вам необходимо покинуть контекст пользователя (то есть вы не можете использовать BackendUserAuthentication, но должны использовать базовые методы).

Относительно вашей общей идеи:

Имейте в виду, что группы могут быть расположены в сложной иерархии с наследованием.Таким образом, может быть непросто перечислить «других групповых пользователей», поскольку в зависимости от сценария вам может потребоваться добавить пользователей родительских или дочерних групп.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...