FOSUserBundle禁止编辑用户名

时间:2012-12-14 17:46:50

标签: symfony fosuserbundle

如何禁止在FOSUserBundle中编辑用户名?

现在我可以进入个人资料编辑页面并更改用户名。例如,如何仅为ROLE_ADMIN允许此操作?

但允许在个人资料中修改电子邮件。

找到解决方案:

class ProfileFormType extends BaseType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    parent::buildForm($builder, $options);

    $builder->remove('username');
}

public function getName()
{
    return 'goock_user_profile';
}
}

安全吗?

1 个答案:

答案 0 :(得分:2)

为了让您只允许ROLE_ADMIN编辑表单字段,您需要将“security.context”服务传递到表单类型,然后执行以下操作

if ($this->securityContext->isGranted('ROLE_ADMIN')) {
   $builder->add('username');
}

//or if username is already added

if (!$this->securityContext->isGranted('ROLE_ADMIN')) {
   $builder->remove('username');
}