Esempio n. 1
0
 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;
 }