如何禁止在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';
}
}
安全吗?
答案 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');
}