Я хотел бы спросить в качестве комментария в этот связанный вопрос , но у меня нет требуемого представителя.
Я использую Symfony 4 (flex) с комплектом администрирования sonata, и яхотел бы создать «администратора» для пользователей, который позволит управлять пользователями приложений через серверную часть сонаты.Проблема здесь в поле пароля.
Я знаю, что могу использовать комплект пользователей Sonata или установить FOSUserBundle и заставить его работать, следуя советам в связанном вопросе, но есть ли у кого-нибудь опыт работы с илисоветы, как сделать эту работу без установки FOS Bundle?
Я попытался выполнить действия, описанные в связанном вопросе, но сталкиваюсь с ошибками, касающимися отсутствующего поля 'plainPassword' и отсутствия связанных методов получения и установки,Имеет смысл, учитывая, что эти поля не существуют на моем (не FOS) пользовательском объекте, поэтому я изменил тип поля на пароль (см. ниже), но теперь, очевидно, пароль сохраняется в БД в виде открытого текста ...
// src/Admin/UserAdmin.php
protected function configureFormFields(FormMapper $formMapper)
{
$pass_required = false;
if (!$this->subject->getId()) {
$pass_required = true;
}
$formMapper->add('email')
->add('firstName')
->add('lastName')
->add('password', RepeatedType::class, [
'data' => null,
'type' => PasswordType::class,
'first_options' => ['label' => 'Password'],
'second_options' => ['label' => 'Confirm Password'],
'invalid_message' => 'Passwords don\'t match',
'required' => $pass_required,
]);
}
В конечном итоге, если мне абсолютно необходимо пойти по пути установки FOS User Bundle, то это то, что мне нужно будет сделать, но я хотел бы услышать любые идеи, как мне избежать этой дополнительной зависимости,поскольку многие функции FOSUserBundle для этого проекта излишни.
ОБНОВЛЕНИЕ: Я пошел по пути установки FOSUserBundle и смог подключить его к sonata admin, поскольку это позволило мне использовать поле plainPassword в определении формы, и все работает как положено.
Однако без установки пакета пользователей Sonata, я не получаю удобные кнопки выхода из системы, добавленные в шаблон администратора.Я был бы согласен с добавлением пакета Sonata User в мой проект, за исключением того, что, как видно из большей части недавней документации, которую я обнаружил, защитники Symfony являются подходящим способом, и это, кажется, не совместимо (или, по крайней мере, труднонастроить) с пакетом FOSUser, к сожалению.
Я нашел эту страницу , повторяющуюся информацию здесь , с подробными инструкциями о том, как настроить аутентификацию при входе в систему с использованием более простого пользователяEntity и без пакетов FOS, мне удалось заставить это работать, но это руководство не дает советов о том, как создать UserAdmin, который будет работать в этой конфигурации, или как разместить меню кнопки выхода из системы / useraccount в шаблоне администратора
Теперь у меня есть 2 оставшихся препятствия :
- Мне нужно поле пароля, чтобы зашифровать перед сохранением (буду делать SO поиск для помощи с этим), и принять пустой пароль вформа (что означает «не изменять»), в настоящий момент генерирует «ожидаемую строку, указана нулевая строка»
- необходимо выяснить, как переопределить и включить шаблон user_block.html.twig в структуру каталогов symfony flex.(найдено этот вопрос , но единственный ответ там предполагает более старую структуру каталогов, и я немного запутался, как указать путь к переопределению, которое я создал в
templates/SonataOverrides/user_block.html.twig
templates:
user_block: App:templates:SonataOverrides:user_block.html.twig
с
sonata_block:
blocks:
# enable the SonataAdminBundle block
sonata.admin.block.admin_list:
contexts: [admin]
sonata.user.block.menu:
sonata.user.block.account:
не работает. Любой совет ??