public function handle_authentication_callback()
 {
     $user = new User();
     if ($user && !$user->isError() && $user->isLoggedIn()) {
         $this->handle_attach_callback();
     }
     $token = \Request::getInstance()->get('oauth_token');
     $verifier = \Request::getInstance()->get('oauth_verifier');
     $token = $this->getService()->requestAccessToken($token, $verifier);
     $this->setToken($token);
     if ($token) {
         try {
             $user = $this->attemptAuthentication();
             if ($user) {
                 return $this->completeAuthentication($user)->send();
             } else {
                 $this->showError(t('No local user account associated with this user, please log in with a local account and connect your account from your user profile.'));
             }
         } catch (Exception $e) {
             $this->showError($e->getMessage());
         } catch (\Exception $e) {
             $this->showError(t('An unexpected error occurred.'));
         }
     } else {
         $this->showError(t('Failed to complete authentication.'));
     }
     exit;
 }
 private function validateUser()
 {
     // check to see if this is a valid user account
     $user = new User();
     if (!$user->checkLogin()) {
         $isActive = $user->isActive();
         $user->logout();
         if ($user->isError()) {
             switch ($user->getError()) {
                 case USER_SESSION_EXPIRED:
                     return Redirect::to('/login', 'session_invalidated')->send();
             }
         } elseif (!$isActive) {
             return Redirect::to('/login', 'account_deactivated')->send();
         } else {
             $v = new View('/frontend/user_error');
             $v->setViewTheme('concrete');
             $contents = $v->render();
             return $this->app->make(ResponseFactoryInterface::class)->forbidden($contents);
         }
     }
 }
 public function isError()
 {
     return parent::isError();
 }