Example #1
0
 /**
  * Create or update user by using data from facebook and login to store
  *
  * @param GraphUser   $facebookUser
  * @param AccessToken $accessToken
  *
  * @return CustomerInterface
  */
 private function createOrUpdateAndLogin(GraphUser $facebookUser, AccessToken $accessToken)
 {
     if (!$this->customer->getId()) {
         $this->customer->setEmail($facebookUser->getEmail());
         $this->customer->setFirstname($facebookUser->getFirstName());
         $this->customer->setLastname($facebookUser->getLastName());
         $this->customer->setMiddlename($facebookUser->getMiddleName());
         $this->customer->setGender((int) ($facebookUser->getGender() == 'male'));
     }
     $this->customer->setCustomAttribute('sf_id', $facebookUser->getId());
     $this->customer->setCustomAttribute('sf_access_token', serialize($accessToken));
     if ($this->customer->getId()) {
         $customer = $this->customerRepository->save($this->customer);
     } else {
         $customer = $this->accountManagement->createAccount($this->customer);
     }
     $this->login($customer->getId());
     return $customer;
 }
Example #2
0
 /**
  * Dispatch request
  *
  * @return ResponseInterface
  */
 public function execute()
 {
     $customer = $this->customerSession->getCustomerData();
     $accessTokenAttribute = $customer->getCustomAttribute('sf_access_token');
     $facebookUserIdAttribute = $customer->getCustomAttribute('sf_access_token');
     if ($accessTokenAttribute && $facebookUserIdAttribute) {
         /** @var $accessToken \Facebook\Authentication\AccessToken */
         $accessToken = unserialize($accessTokenAttribute->getValue());
         $facebookUserId = $facebookUserIdAttribute->getValue();
         try {
             $this->facebook->delete('/' . $facebookUserId . '/permissions', [], $accessToken);
             $customer->setCustomAttribute('sf_id', null);
             $customer->setCustomAttribute('sf_access_token', null);
             $this->customerRepository->save($customer);
             $this->messageManager->addSuccess(__('You have successfully disconnected your Facebook account from our store account.'));
         } catch (Exception $e) {
             $this->logger->addError($e->getMessage());
             $this->messageManager->addError(__("Oops. Something went wrong! Please try again later."));
         }
     }
     return $this->_redirect($this->_redirect->getRefererUrl());
 }