UserManager.php 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /*
  3. *
  4. */
  5. namespace Muzich\UserBundle\Entity;
  6. use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface;
  7. use FOS\UserBundle\Util\CanonicalizerInterface;
  8. use Doctrine\ORM\EntityManager;
  9. //use FOS\UserBundle\Entity\UserManager as UserManagerBase; UPGRADE FOSUserBundle 1.3
  10. use FOS\UserBundle\Doctrine\UserManager as UserManagerBase;
  11. /**
  12. */
  13. class UserManager extends UserManagerBase
  14. {
  15. /**
  16. * Constructor.
  17. */
  18. public function __construct(EncoderFactoryInterface $encoderFactory, CanonicalizerInterface $usernameCanonicalizer, CanonicalizerInterface $emailCanonicalizer, EntityManager $em, $class)
  19. {
  20. parent::__construct($encoderFactory, $usernameCanonicalizer, $emailCanonicalizer, $em, $class);
  21. // Slug stuff
  22. $evm = new \Doctrine\Common\EventManager();
  23. // ORM and ODM
  24. $sluggableListener = new \Gedmo\Sluggable\SluggableListener();
  25. $evm->addEventSubscriber($sluggableListener);
  26. // now this event manager should be passed to entity manager constructor
  27. $this->objectManager->getEventManager()->addEventSubscriber($sluggableListener);
  28. }
  29. public function getNewReadyUser()
  30. {
  31. $user = $this->createUser();
  32. $user->setUsername($this->generateUsername());
  33. $user->setPlainPassword($this->generatePassword(32));
  34. $user->setEnabled(true);
  35. $user->setCguAccepted(true);
  36. $user->setEmailConfirmed(false);
  37. $user->setUsernameUpdatable(true);
  38. $user->setPasswordSet(false);
  39. return $user;
  40. }
  41. protected function generateUsername()
  42. {
  43. $count = $this->repository->countUsers();
  44. while ($this->usernameExist($count))
  45. {
  46. $count++;
  47. }
  48. return 'User'.$count;
  49. }
  50. protected function usernameExist($count)
  51. {
  52. $username = 'User'.$count;
  53. if ($this->repository->findOneByUsername($username))
  54. {
  55. return true;
  56. }
  57. return false;
  58. }
  59. protected function generatePassword($length = 8)
  60. {
  61. $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  62. $count = mb_strlen($chars);
  63. for ($i = 0, $result = ''; $i < $length; $i++) {
  64. $index = rand(0, $count - 1);
  65. $result .= mb_substr($chars, $index, 1);
  66. }
  67. return $result;
  68. }
  69. }