使用FOSUserBunde归档用户

时间:2017-09-03 07:42:42

标签: symfony fosuserbundle

我必须归档我的用户。我向User实体添加了一列,将它们设置为已存档。但是这种方法遇到了一些问题。我的归档用户和归档用户之间的用户名可以相同,电子邮件也是如此。 第一个问题:如何通过电子邮件和用户名阻止Unique Constraint违规错误? 第二个问题:如何才能使FOS仅检查其功能中的归档用户?

1 个答案:

答案 0 :(得分:1)

  1. 您可以为存档用户的姓名和电子邮件添加前缀。例如: archived.%id%.。或者将它们移到另一张桌子上。
  2. 扩展UserManager类并重写选择用户的方法。

    namespace MyFOSUserBundle;
    
    class UserManager extends \FOS\UserBundle\Doctrine\UserManager
    {
        public function findUserBy(array $criteria)
        {
            $criteria['archived'] = 0;
            return $this->getRepository()->findOneBy($criteria);
        }
    
        public function findUsers()
        {
            return $this->getRepository()->findBy(array('archived' => 0));
        }
    }
    

    UserManager参数中将此类设置为FOSUserBundle

    services:
        my_fos_user.user_manager:
            class: MyFOSUserBundle\UserManager
            arguments:
                - "@fos_user.util.password_updater"
                - "@fos_user.util.canonical_fields_updater"
                - "@fos_user.object_manager"
                - "%fos_user.model.user.class%"
    
    fos_user:
        service:
            user_manager: my_fos_user.user_manager