/**
  *
  * @param EntryController $Sender
  * @param array $Args
  */
 public function EntryController_OpenID_Create($Sender, $Args)
 {
     $this->EventArguments = $Args;
     $Sender->Form->InputPrefix = '';
     $OpenID = $this->GetOpenID();
     $Mode = $Sender->Request->Get('openid_mode');
     switch ($Mode) {
         case 'cancel':
             $Sender->Render('Cancel', '', 'plugins/OpenID');
             break;
         case 'id_res':
             if ($OpenID->validate()) {
                 $Attributes = $OpenID->getAttributes();
                 print_r($_GET);
             }
             break;
         default:
             if (!$OpenID->identity) {
                 $Sender->CssClass = 'Dashboard Entry connect';
                 $Sender->SetData('Title', T('Sign In with OpenID'));
                 $Sender->Render('Url', '', 'plugins/OpenID');
             } else {
                 try {
                     $Url = $OpenID->authUrl();
                     Redirect($Url);
                 } catch (Exception $Ex) {
                     $Sender->Form->AddError($Ex);
                     $Sender->Render('Url', '', 'plugins/OpenID');
                 }
             }
             break;
     }
 }
 /**
  * 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');
     }
 }