/** * @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; }
/** * @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; }
/** * @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()); }
/** * @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(); } }
/** * @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; }
/** * @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; }
/** * @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; }