/** * Create account user form * * @Route("/register", name="orob2b_customer_frontend_account_user_register") * @Template("OroB2BCustomerBundle:AccountUser/Frontend:register.html.twig") * * @return array|RedirectResponse */ public function registerAction() { if ($this->getUser()) { return $this->redirect($this->generateUrl('orob2b_customer_frontend_account_user_profile')); } $isRegistrationAllowed = $this->get('oro_config.manager')->get('oro_b2b_customer.registration_allowed'); if (!$isRegistrationAllowed) { throw new AccessDeniedException(); } $accountUser = new AccountUser(); /** @var WebsiteManager $websiteManager */ $websiteManager = $this->get('orob2b_website.manager'); $website = $websiteManager->getCurrentWebsite(); $websiteOrganization = $website->getOrganization(); if (!$websiteOrganization) { throw new \RuntimeException('Website organization is empty'); } $defaultRole = $this->getDoctrine()->getManagerForClass('OroB2BCustomerBundle:AccountUserRole')->getRepository('OroB2BCustomerBundle:AccountUserRole')->getDefaultAccountUserRoleByWebsite($website); if (!$defaultRole) { throw new \RuntimeException(sprintf('Role "%s" was not found', AccountUser::ROLE_DEFAULT)); } $accountUser->addOrganization($websiteOrganization)->setOrganization($websiteOrganization)->addRole($defaultRole); $userManager = $this->get('orob2b_account_user.manager'); $form = $this->createForm(FrontendAccountUserRegistrationType::NAME, $accountUser); $handler = new FrontendAccountUserHandler($form, $this->getRequest(), $userManager); if ($userManager->isConfirmationRequired()) { $registrationMessage = 'orob2b.customer.controller.accountuser.registered_with_confirmation.message'; } else { $registrationMessage = 'orob2b.customer.controller.accountuser.registered.message'; } return $this->get('oro_form.model.update_handler')->handleUpdate($accountUser, $form, ['route' => 'orob2b_customer_account_user_security_login'], ['route' => 'orob2b_customer_account_user_security_login'], $this->get('translator')->trans($registrationMessage), $handler); }
/** * Process form * * @param AccountUser $accountUser * @return bool True on successful processing, false otherwise */ public function process(AccountUser $accountUser) { if (in_array($this->request->getMethod(), ['POST', 'PUT'], true)) { $this->form->submit($this->request); if ($this->form->isValid()) { if (!$accountUser->getId()) { if ($this->form->get('passwordGenerate')->getData()) { $generatedPassword = $this->userManager->generatePassword(10); $accountUser->setPlainPassword($generatedPassword); } if ($this->form->get('sendEmail')->getData()) { $this->userManager->sendWelcomeEmail($accountUser); } } $token = $this->securityContext->getToken(); if ($token instanceof OrganizationContextTokenInterface) { $organization = $token->getOrganizationContext(); $accountUser->setOrganization($organization)->addOrganization($organization); } $this->userManager->updateUser($accountUser); return true; } } return false; }
/** * @return array */ public function submitProvider() { $entity = new AccountUser(); $expectedEntity = new AccountUser(); $expectedEntity->setSalt($entity->getSalt()); return ['reset password' => ['defaultData' => $entity, 'submittedData' => ['plainPassword' => 'new password'], 'expectedData' => $expectedEntity]]; }
/** * @param ObjectManager $manager */ public function load(ObjectManager $manager) { foreach ($this->users as $user) { $entity = new AccountUser(); $entity->setFirstName($user['first_name'])->setLastName($user['last_name'])->setEmail($user['email'])->setEnabled($user['enabled'])->setPassword($user['password']); $this->setReference($entity->getEmail(), $entity); $manager->persist($entity); } $manager->flush(); }
/** * @return array */ public function submitProvider() { $entity = new AccountUser(); $expectedEntity = new AccountUser(); $expectedEntity->setFirstName('John'); $expectedEntity->setLastName('Doe'); $expectedEntity->setEmail('*****@*****.**'); $entity->setSalt($expectedEntity->getSalt()); return ['new user' => ['defaultData' => $entity, 'submittedData' => ['firstName' => 'John', 'lastName' => 'Doe', 'email' => '*****@*****.**', 'plainPassword' => '123456'], 'expectedData' => $expectedEntity]]; }
/** * Process form * * @param AccountUser $accountUser * @return bool True on successful processing, false otherwise */ public function process(AccountUser $accountUser) { if (in_array($this->request->getMethod(), ['POST', 'PUT'], true)) { $this->form->submit($this->request); if ($this->form->isValid()) { if (!$accountUser->getId()) { $this->userManager->register($accountUser); } $this->userManager->updateUser($accountUser); $this->userManager->reloadUser($accountUser); return true; } } return false; }
/** * {@inheritdoc} * @dataProvider supportedMethods */ public function testProcessSupportedRequest($method, $isValid, $isProcessed) { $organization = null; if ($isValid) { $organization = new Organization(); $organization->setName('test'); $organizationToken = $this->getMock('Oro\\Bundle\\SecurityBundle\\Authentication\\Token\\OrganizationContextTokenInterface'); $organizationToken->expects($this->any())->method('getOrganizationContext')->willReturn($organization); $this->securityContext->expects($this->any())->method('getToken')->willReturn($organizationToken); $this->form->expects($this->at(2))->method('get')->with('passwordGenerate')->will($this->returnValue($this->passwordGenerateForm)); $this->form->expects($this->at(3))->method('get')->with('sendEmail')->will($this->returnValue($this->sendEmailForm)); $this->passwordGenerateForm->expects($this->once())->method('getData')->will($this->returnValue(false)); $this->sendEmailForm->expects($this->once())->method('getData')->will($this->returnValue(false)); } $this->form->expects($this->any())->method('isValid')->will($this->returnValue($isValid)); $this->request->setMethod($method); $this->form->expects($this->once())->method('submit')->with($this->request); $this->assertEquals($isProcessed, $this->handler->process($this->entity)); if ($organization) { $this->assertEquals($organization, $this->entity->getOrganization()); $this->assertTrue($this->entity->hasOrganization($organization)); } }
public function testSendResetPasswordEmail() { $this->assertSendCalled(Processor::RESET_PASSWORD_EMAIL_TEMPLATE_NAME, ['entity' => $this->user], $this->buildMessage($this->user->getEmail())); $this->mailProcessor->sendResetPasswordEmail($this->user); }
/** * Get the truncated email displayed when requesting the resetting. * The default implementation only keeps the part following @ in the address. * * @param AccountUser $user * * @return string */ protected function getObfuscatedEmail(AccountUser $user) { $email = $user->getEmail(); if (false !== ($pos = strpos($email, '@'))) { $email = '...' . substr($email, $pos); } return $email; }
/** * @param AccountUser $accountUser * @param boolean $enabled * @param string $successMessage * @return JsonResponse */ protected function enableTrigger(AccountUser $accountUser, $enabled, $successMessage) { $userManager = $this->get('orob2b_account_user.manager'); $accountUser->setEnabled($enabled); $userManager->updateUser($accountUser); return new JsonResponse(['successful' => true, 'message' => $successMessage]); }
/** * @param AccountUser $user */ public function sendConfirmationEmail(AccountUser $user) { $user->setConfirmed(false)->setConfirmationToken($user->generateToken()); $this->getEmailProcessor()->sendConfirmationEmail($user); }
public function testRegisterConfirmationNotRequired() { $password = '******'; $user = new AccountUser(); $user->setConfirmed(false); $user->setPlainPassword($password); $this->configManager->expects($this->exactly(2))->method('get')->willReturnMap([['oro_b2b_customer.confirmation_required', false, false, false], ['oro_b2b_customer.send_password_in_welcome_email', false, false, true]]); $this->emailProcessor->expects($this->once())->method('sendWelcomeNotification')->with($user, $password); $this->userManager->register($user); $this->assertTrue($user->isConfirmed()); }