public function signUp($email, $password = null, $name, $resource = null, $resource_id = null) { /** @var EntityManager $em */ $em = $this->entityManager; $encoderFactory = $this->encoderFactory; $encoder = $encoderFactory->getEncoder(new User()); $user = $em->getRepository('NaidusvoeBundle:User')->findOneBy(['email' => $email]); $exist = $user === null ? false : true; if ($exist === false) { /** @var User $user */ $user = new User(); $user->setEmail($email); $user->setUsername($email); $user->setRegistered(new \DateTime()); $user->setLastActive(new \DateTime()); $user->addRole(Role::getUserRole($em)); $user->setActive(false); $user->setConfirmationToken(User::generateToken()); } $user->setName($name); if ($exist === false) { if ($resource !== null && $resource_id !== null || $password === null) { $password = User::generatePassword(); $user->setResource($resource, $resource_id); $this->sendRegistrationMail($email, $password); } $user->setPassword($encoder->encodePassword($password, $user->getSalt())); $em->persist($user); $this->sendActivationMail($email, $user->getConfirmationToken()); $settings = new UserSettings(); $settings->setUser($user); $em->persist($settings); } else { $em->persist($user); } $em->flush(); return $user; }