Example #1
0
 /**
  * Save a profile registration form.
  *
  * @param Profile          $entity
  * @param Form             $form
  * @param AbstractProvider $provider
  * @param string           $providerName
  *
  * @return FormEntityHandler
  */
 public function saveProfileRegisterForm(Profile $entity, Form $form, AbstractProvider $provider, $providerName)
 {
     // Create and store the account record
     $account = $this->createAccount($entity);
     $guid = $account->getGuid();
     // Create the event
     $event = new MembersProfileEvent($account);
     // Create verification meta
     $this->createAccountVerificationKey($event, $guid);
     // Create a local OAuth account record
     $password = $form->get('password')->getData();
     if ($password) {
         $this->createLocalOauthAccount($guid, $password);
         $this->createLocalProviderEntity($guid);
     }
     // Create a provider entry
     if ($this->session->isTransitional()) {
         $accessToken = $this->session->getTransitionalProvider()->getAccessToken();
         $this->convertTransitionalProviderToEntity($guid);
     } else {
         $accessToken = $provider->getAccessToken('password', ['guid' => $account->getGuid()]);
     }
     // Set up the initial session.
     $this->session->addAccessToken($providerName, $accessToken)->createAuthorisation($guid);
     // Dispatch the account profile post-save event
     $this->eventDispatcher->dispatch(MembersEvents::MEMBER_PROFILE_REGISTER, $event);
     return $this;
 }
Example #2
0
 /**
  * Return the combined login & registration resolved form object.
  *
  * @param Request $request    The client Request object being processed.
  * @param string  $twigParent Parent Twig template to be used.
  *
  * @return ResolvedFormBuild
  */
 protected function getFormCombinedLogin(Request $request, $twigParent)
 {
     $resolvedBuild = new ResolvedFormBuild();
     $resolvedBuild->setContext(['twigparent' => $twigParent]);
     /** @var Builder\Associate $builder */
     $builder = $this->formGenerator->getFormBuilder(MembersForms::FORM_ASSOCIATE);
     $builder->setAction(sprintf('/%s/login', $this->config->getUrlAuthenticate()));
     $associateForm = $builder->createForm([])->handleRequest($request);
     $resolvedBuild->addBuild(MembersForms::FORM_ASSOCIATE, $builder, $associateForm);
     /** @var Builder\LoginOauth $builder */
     $builder = $this->formGenerator->getFormBuilder(MembersForms::FORM_LOGIN_OAUTH);
     $builder->setAction(sprintf('/%s/login', $this->config->getUrlAuthenticate()));
     $formOauth = $builder->createForm([])->handleRequest($request);
     $resolvedBuild->addBuild(MembersForms::FORM_LOGIN_OAUTH, $builder, $formOauth);
     /** @var Builder\LoginPassword $builder */
     $builder = $this->formGenerator->getFormBuilder(MembersForms::FORM_LOGIN_PASSWORD);
     $builder->setAction(sprintf('/%s/login', $this->config->getUrlAuthenticate()));
     $formPassword = $builder->createForm([])->handleRequest($request);
     $resolvedBuild->addBuild(MembersForms::FORM_LOGIN_PASSWORD, $builder, $formPassword);
     /** @var Builder\ProfileRegister $builder */
     $builder = $this->formGenerator->getFormBuilder(MembersForms::FORM_PROFILE_REGISTER);
     $builder->setAction(sprintf('/%s/profile/register', $this->config->getUrlMembers()));
     $formRegister = $builder->createForm([])->handleRequest($request);
     if ($this->session->isTransitional()) {
     }
     $resolvedBuild->addBuild(MembersForms::FORM_PROFILE_REGISTER, $builder, $formRegister);
     return $resolvedBuild;
 }
Example #3
0
 /**
  * Display the registration form.
  *
  * @param TwigEnvironment $twigEnvironment
  * @param string          $template
  *
  * @return TwigMarkup
  */
 public function renderRegister(TwigEnvironment $twigEnvironment, $template = null)
 {
     $context = ['transitional' => $this->session->isTransitional()];
     $template = $template ?: $this->config->getTemplate('profile', 'register');
     $form = $this->formManager->getFormProfileRegister(new Request(), false);
     $html = $this->formManager->renderForms($form, $twigEnvironment, $template, $context);
     return new TwigMarkup($html, 'UTF-8');
 }
Example #4
0
 /**
  * Process the login request.
  *
  * @param Request $request
  * @param string  $grantType
  *
  * @throws Ex\DisabledAccountException
  * @throws Ex\InvalidAuthorisationRequestException
  * @throws Ex\MissingAccountException
  */
 protected function process(Request $request, $grantType)
 {
     $code = $request->query->get('code');
     if ($code === null) {
         $this->setDebugMessage('Attempt to get an OAuth2 access token with an empty code in the request.');
         throw new Ex\InvalidAuthorisationRequestException('No provider access code.');
     }
     $options['code'] = $code;
     if ($this->session->hasAuthorisation()) {
         $options['guid'] = $this->session->getAuthorisation()->getGuid();
         $accessToken = $this->getAccessToken($grantType, $options);
         $this->setSession($accessToken);
         if ($this->session->isTransitional()) {
             $this->handleAccountTransition($accessToken);
         }
     } else {
         //either no Auth or more probably a disabled account... anyway we cant continue
         $exceptionMsg = 'No valid authorisation, the account may be disabled';
         $this->setDebugMessage($exceptionMsg);
         $this->feedback->error($exceptionMsg);
         throw new Ex\DisabledAccountException($exceptionMsg);
     }
 }