gpt4 book ai didi

symfony - 使用 FOSUserBundle 更改另一个用户的密码

转载 作者:行者123 更新时间:2023-12-02 18:38:52 26 4
gpt4 key购买 nike

我的系统中有两个角色:用户和管理员。默认情况下,当某人以用户或管理员身份登录时,他可以使用 FOSUserBundle 的实现形式修改自己的密码。但我想禁止用户更改自己的密码,必须向管理员请求密码,这样管理员就会重置密码,要么引入管理员选择的新密码,要么生成随 secret 码。我还想向用户发送一封电子邮件,告诉他他的密码已更改,从现在开始他必须使用新密码。但我找不到怎么做。有什么帮助吗?

最佳答案

如果您希望管理员更改其他用户的密码,您可以使用自己的表单:

class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('username', TextType::class, array(
'required' => true,
'label' => "Username "
))
->add('email', TextType::class, array(
'required' => true,
'label' => "Adresse email "
))
->add('plainPassword', RepeatedType::class, array(
'type' => PasswordType::class,
'options' => array('translation_domain' => 'FOSUserBundle'),
'first_options' => array('label' => 'form.password'),
'second_options' => array('label' => 'form.password_confirmation'),
'invalid_message' => 'fos_user.password.mismatch',
))
->add('roles', ChoiceType::class, array(
'required' => true,
'choices' => array('Salarié' => 'ROLE_SALARIE', 'Admin' => 'ROLE_ADMIN'),
'multiple' => true,
'expanded'=>true,
'label' => "Rôle ",
'label_attr' => array('class' => 'checkbox-inline')
))
;
}

//...

然后,在你的 Controller 中:

public function updateAction(Request $request, Member $user)
{
$em = $this->getDoctrine()->getManager();

$form = $this->createEditForm($user);
$form->handleRequest($request);

if ($form->isValid()) {
$userManager = $this->container->get('fos_user.user_manager');
$userManager->updatePassword($user);
$em->flush();

关于symfony - 使用 FOSUserBundle 更改另一个用户的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15042988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com