Symfony FOSUserBundle:仅管理员确认注册(无电子邮件)

Symfony FOSUserBundle:仅管理员确认注册(无电子邮件),symfony,fosuserbundle,confirmation,Symfony,Fosuserbundle,Confirmation,看起来我是互联网上唯一一个需要这样东西的人,我已经没有选择来寻找这个问题的解决方案,但我相信这里的人们会找到一个解决方案:) 使用FOSUserBundle,我需要以下工作流: 用户填写登记表(由捆绑包生成) 他们到达一个确认页面:“谢谢,等待管理员的验证” 管理员必须手动验证每个用户(因为他们必须在验证时设置属性) 我不想要的是一封确认电子邮件或任何用户自己验证其帐户的方式 我知道这个问题:但这是一个不同的问题,因为OP使用确认电子邮件 问题是,我不知道如何强制FOSUserBundle在创建

看起来我是互联网上唯一一个需要这样东西的人,我已经没有选择来寻找这个问题的解决方案,但我相信这里的人们会找到一个解决方案:)

使用FOSUserBundle,我需要以下工作流:

  • 用户填写登记表(由捆绑包生成)
  • 他们到达一个确认页面:“谢谢,等待管理员的验证”
  • 管理员必须手动验证每个用户(因为他们必须在验证时设置属性)
  • 我不想要的是一封确认电子邮件或任何用户自己验证其帐户的方式

    我知道这个问题:但这是一个不同的问题,因为OP使用确认电子邮件

    问题是,我不知道如何强制FOSUserBundle在创建时不启用用户,同时不激活确认机制(令牌+电子邮件)

    有人吗?提前谢谢你。

    我想你必须这样做。该页面正好显示了需要编辑的控制器:)

    你必须:

  • 将用户的活动设置为false时保持该状态
  • 使用您想要(或不想要)的任何管理生成器,手动将用户的活动标志设置为true

  • 您可以覆盖用户构造函数,并在所有新帐户上将用户字段“锁定”设置为true。然后在“管理”部分中,您可以手动编辑用户,并在设置自定义属性后将其“锁定”设置为false

    public function __construct()
        {
            $this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
            $this->enabled = false;
            $this->locked = true;
            $this->expired = false;
            $this->roles = array();
            $this->credentialsExpired = false;
        }
    

    嗨,乔治,不幸的是,这种方法似乎不起作用,因为我已经尝试过了。或者我不明白你的回答。但问题是FOSUserBundle会覆盖构造函数中设置的值。我可以试试@palra的方法。谢谢你的回答,我已经这样看了(虽然我不知道这个文档页,谢谢),但是我很快就被需要覆盖所有控制器的逻辑所困扰。恐怖的然而,正如您在链接中所提到的,事件选项可能是实现此目的的方式。如果活动成功的话,我会尝试一下,并回答我自己的问题,感谢你们的帮助!:)