/** * * @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'); } }