/**
  * @return mixed
  */
 public function addEmailAction()
 {
     $code = $this->params()->fromRoute('code');
     $codeEntity = $this->userCodes->getCode4Data($code, UserCodes::TYPE_ADD_EMAIL);
     if (!$codeEntity) {
         return $this->forward()->dispatch(AuthController::class, ['action' => 'wrong-code']);
     }
     $user = $this->addEmailService->changeMail($codeEntity->getUser());
     $this->userCodes->deleteCode($codeEntity);
     $this->userService->doAuthentication($user);
     return null;
 }
Example #2
0
 /**
  * @param UserInterface $user
  * @return bool
  */
 protected function isSecretLogin(UserInterface $user)
 {
     $result = false;
     $secretLoginRoleList = $this->collectionOptions->getLoginOptions()->getSecretLoginRoleList();
     if ($secretLoginRoleList && ($userRoles = $user->getRoles())) {
         $secretLoginRoleList = array_map('strtolower', $secretLoginRoleList);
         foreach ($userRoles as $userRole) {
             if (in_array(strtolower($userRole->getRoleId()), $secretLoginRoleList)) {
                 $code = $this->userCodeService->setCode4User($user, UserCodesEntity::TYPE_SECRET_LOGIN);
                 $this->mailService->secretLogin($user, $code);
                 $this->getFlashMessenger()->setNamespace($this::ERROR_NAME_SPACE)->addMessage('Please confirm your secret-login with your email');
                 $result = true;
             }
         }
     }
     return $result;
 }
Example #3
0
 /**
  * @param $data
  * @param UserInterface $user
  * @return bool
  */
 public function addEmail($data, UserInterface $user)
 {
     $form = $this->getAddEmailForm();
     $form->setData($data);
     if (!$form->isValid()) {
         foreach ($form->getElements() as $messages) {
             /** @var \Zend\Form\ElementInterface $messages */
             foreach ($messages->getMessages() as $message) {
                 $this->getFlashMessenger()->setNamespace(self::ERROR_NAMESPACE)->addMessage($message);
             }
         }
         return false;
     }
     $user = $this->getUser4Id($user->getId());
     if ($user->getEmail()) {
         $this->getFlashMessenger()->setNamespace(self::ERROR_NAMESPACE)->addMessage('Email already exists in your Account');
         return false;
     }
     $data = $form->getData();
     $entityManager = $this->entityManager;
     if ($this->collectionOptions->getRegisterOptions()->isMailConfirmation()) {
         $userExtensionName = $this->collectionOptions->getEntityOptions()->getUserExtension();
         /** @var \PServerCore\Entity\UserExtension $userExtension */
         $userExtension = new $userExtensionName();
         /** @var \PServerCore\Entity\Repository\UserExtension $extensionRepository */
         $extensionRepository = $entityManager->getRepository($userExtensionName);
         $extensionRepository->deleteExtension($user, $userExtension::KEY_ADD_EMAIL);
         $userExtension->setKey($userExtension::KEY_ADD_EMAIL)->setUser($user)->setValue($data['email']);
         $entityManager->persist($userExtension);
         $entityManager->flush();
         $code = $this->userCodeService->setCode4User($user, UserCodesEntity::TYPE_ADD_EMAIL);
         $user->setEmail($data['email']);
         $this->mailService->addEmail($user, $code);
         $this->getFlashMessenger()->setNamespace(self::SUCCESS_NAMESPACE)->addMessage('Success, please confirm your mail.');
     } else {
         $user->setEmail($data['email']);
         $entityManager->persist($user);
         $entityManager->flush();
         $this->authService->getStorage()->write($user);
     }
     return true;
 }