/**
  * An intermediate page for jsConnect that checks SSO against and then posts the information to /entry/connect.
  *
  * @param EntryController $Sender
  * @param string $Action A specific action. It can be one of the following:
  *
  * - blank: The default action.
  * - guest: There is no user signed in.
  * -
  * @param string $Target The url to redirect to after a successful connect.
  * @throws /Exception Throws an exception when the jsConnect provider is not found.
  */
 public function entryController_jsConnect_create($Sender, $Action = '', $Target = '')
 {
     $Sender->SetData('_NoMessages', true);
     if ($Action) {
         if ($Action == 'guest') {
             //            Redirect('/');
             $Sender->AddDefinition('CheckPopup', TRUE);
             $Target = $Sender->Form->GetFormValue('Target', '/');
             $Sender->RedirectUrl = $Target;
             $Sender->Render('JsConnect', '', 'plugins/jsconnect');
         } else {
             parse_str($Sender->Form->GetFormValue('JsConnect'), $JsData);
             $Error = GetValue('error', $JsData);
             $Message = GetValue('message', $JsData);
             if ($Error === 'timeout' && !$Message) {
                 $Message = T('Your sso timed out.', 'Your sso timed out during the request. Please try again.');
             }
             Gdn::Dispatcher()->PassData('Exception', $Message ? htmlspecialchars($Message) : htmlspecialchars($Error))->Dispatch('home/error');
             //            $Sender->Form->AddError($Message ? htmlspecialchars($Message) : htmlspecialchars($Error));
             //            $Sender->SetData('Title', T('Error'));
             //            $Sender->Render('JsConnect_Error', '', 'plugins/jsconnect');
         }
     } else {
         $client_id = $Sender->SetData('client_id', $Sender->Request->Get('client_id', 0));
         $Provider = self::getProvider($client_id);
         if (empty($Provider)) {
             throw NotFoundException('Provider');
         }
         $Get = ArrayTranslate($Sender->Request->Get(), array('client_id', 'display'));
         $Sender->AddDefinition('JsAuthenticateUrl', self::connectUrl($Provider, TRUE));
         $Sender->AddJsFile('jsconnect.js', 'plugins/jsconnect');
         $Sender->SetData('Title', T('Connecting...'));
         $Sender->Form->Action = Url('/entry/connect/jsconnect?' . http_build_query($Get));
         $Sender->Form->AddHidden('JsConnect', '');
         $Sender->Form->AddHidden('Target', $Target);
         $Sender->MasterView = 'empty';
         $Sender->Render('JsConnect', '', 'plugins/jsconnect');
     }
 }