Example #1
0
 /**
  * @param UserInterface $userEntity
  * @param string $type
  * @param int|null $expire
  *
  * @return string
  */
 public function setCode4User(UserInterface $userEntity, $type, $expire = null)
 {
     $entityManager = $this->entityManager;
     $this->getRepositoryManager()->deleteCodes4User($userEntity->getId(), $type);
     do {
         $found = false;
         $code = $this->formatService->getCode();
         if ($this->getRepositoryManager()->getCode($code)) {
             $found = true;
         }
     } while ($found);
     $userCodesEntity = new Entity();
     $userCodesEntity->setCode($code)->setUser($userEntity)->setType($type);
     if (!$expire) {
         $expireOption = $this->collectionOptions->getUserCodesOptions()->getExpire();
         if (isset($expireOption[$type])) {
             $expire = $expireOption[$type];
         } else {
             $expire = $expireOption['general'];
         }
     }
     if ($expire) {
         $dateTime = new DateTime();
         $userCodesEntity->setExpire($dateTime->setTimestamp(time() + $expire));
     }
     $entityManager->persist($userCodesEntity);
     $entityManager->flush();
     return $code;
 }
 /**
  * @param UserInterface $user
  * @param       $answer
  *
  * @return bool
  */
 public function isAnswerAllowed(UserInterface $user, $answer)
 {
     $answerEntity = $this->getEntityManagerAnswer()->getAnswer4UserId($user->getId());
     if (!$answerEntity) {
         return true;
     }
     // @TODO better workflow, with ZendFilter
     $realAnswer = strtolower(trim($answerEntity->getAnswer()));
     $plainAnswer = strtolower(trim($answer));
     return $realAnswer === $plainAnswer;
 }
Example #3
0
 /**
  * @param $data
  * @param $userId
  * @param UserInterface $adminUser
  * @return bool
  */
 public function addCoinsForm($data, $userId, UserInterface $adminUser)
 {
     $form = $this->adminCoinForm;
     $form->setData($data);
     if (!$form->isValid()) {
         return false;
     }
     $user = $this->getUser4Id($userId);
     if ($user) {
         $data = $form->getData();
         $this->addCoins($user, $data['coins']);
         $class = $this->entityOptions->getDonateLog();
         /** @var \PServerCore\Entity\DonateLog $donateEntity */
         $donateEntity = new $class();
         $donateEntity->setTransactionId('AdminPanel: ' . $adminUser->getUsername())->setCoins($data['coins'])->setIp($this->ipService->getIp())->setSuccess($donateEntity::STATUS_SUCCESS)->setType($donateEntity::TYPE_INTERNAL)->setUser($user);
         $this->entityManager->persist($donateEntity);
         $this->entityManager->flush();
     }
     return true;
 }
Example #4
0
 /**
  * @param UserInterface $entity
  * @param string $plaintext
  * @return bool
  */
 public function hashPassword(UserInterface $entity, $plaintext)
 {
     if ($this->isSamePasswordOption()) {
         return $this->gameDataService->isPasswordSame($entity->getPassword(), $plaintext);
     }
     $bcrypt = new Bcrypt();
     return $bcrypt->verify($plaintext, $entity->getPassword());
 }
Example #5
0
 /**
  * @param $subjectKey
  * @param UserInterface $user
  * @param $params
  */
 protected function send($subjectKey, UserInterface $user, $params)
 {
     // we have no mail, so we can skip it
     if (!$user->getEmail()) {
         return;
     }
     // TODO TwigTemplateEngine
     $renderer = $this->viewRenderer;
     //$oResolver = $this->getServiceManager()->get('ZfcTwig\View\TwigResolver');
     //$oResolver->resolve(__DIR__ . '/../../../view');
     //$oRenderer->setResolver($oResolver);
     //$oRenderer->setVars($aParams);
     $viewModel = new ViewModel();
     $viewModel->setTemplate('email/tpl/' . $subjectKey);
     $viewModel->setVariables($params);
     $bodyRender = $renderer->render($viewModel);
     $subject = $this->getSubject4Key($subjectKey);
     try {
         // make a header as html
         $html = new Part($bodyRender);
         $html->type = "text/html";
         $body = new MimeMessage();
         $body->setParts([$html]);
         $mail = new Message();
         $mail->setBody($body);
         $mailOptions = $this->collectionOptions->getMailOptions();
         $mail->setFrom($mailOptions->getFrom(), $mailOptions->getFromName());
         $mail->setTo($user->getEmail());
         $mail->setSubject($subject);
         $transport = new Smtp($this->getSMTPOptions());
         $transport->send($mail);
     } catch (Exception $e) {
         // Logging if smth wrong in Configuration or SMTP Offline =)
         $class = $this->collectionOptions->getEntityOptions()->getLogs();
         /** @var \PServerCore\Entity\Logs $logEntity */
         $logEntity = new $class();
         $logEntity->setTopic('mail_faild');
         $logEntity->setMemo($e->getMessage());
         $logEntity->setUser($user);
         $this->entityManager->persist($logEntity);
         $this->entityManager->flush();
     }
 }
Example #6
0
 /**
  * @TODO better error handling
  *
  * @param array $data
  * @param UserInterface $user
  * @param string $errorExtension
  *
  * @return bool
  */
 protected function isPwdChangeAllowed(array $data, UserInterface $user, $errorExtension)
 {
     $form = $this->changePasswordForm;
     $form->setData($data);
     if (!$form->isValid()) {
         $this->flashMessenger->setNamespace(AccountController::ERROR_NAME_SPACE . $errorExtension)->addMessage('Form not valid.');
         return false;
     }
     $data = $form->getData();
     if (!$user->hashPassword($user, $data['currentPassword'])) {
         $this->flashMessenger->setNamespace(AccountController::ERROR_NAME_SPACE . $errorExtension)->addMessage('Wrong Password.');
         return false;
     }
     return true;
 }
Example #7
0
 /**
  * @param UserInterface $user
  * @param               $roleId
  * @return bool
  */
 protected function isRoleAlreadyAdded(UserInterface $user, $roleId)
 {
     $result = false;
     foreach ($user->getRoles() as $role) {
         if ($role->getId() == $roleId) {
             $result = true;
             break;
         }
     }
     return $result;
 }
Example #8
0
 /**
  * @param UserInterface $user
  * @return UserInterface
  */
 public function changeMail(UserInterface $user)
 {
     $entityManager = $this->entityManager;
     $userExtensionName = $this->collectionOptions->getEntityOptions()->getUserExtension();
     /** @var \PServerCore\Entity\UserExtension $userExtension */
     $userExtension = new $userExtensionName();
     /** @var \PServerCore\Entity\Repository\UserExtension $extensionRepository */
     $extensionRepository = $entityManager->getRepository($userExtensionName);
     $userExtension = $extensionRepository->findOneBy(['key' => $userExtension::KEY_ADD_EMAIL, 'user' => $user]);
     $user->setEmail($userExtension->getValue());
     $entityManager->persist($user);
     $entityManager->flush();
     $extensionRepository->deleteExtension($user, $userExtension::KEY_ADD_EMAIL);
     return $user;
 }