/** * * * @param EntryController $Sender * @param array $Args */ public function entryController_openID_create($Sender, $Args) { $this->EventArguments = $Args; try { $OpenID = $this->getOpenID(); } catch (Gdn_UserException $ex) { $Sender->Form->addError('@' . $ex->getMessage()); $Sender->render('Url', '', 'plugins/OpenID'); } $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') { $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 = val('error', $JsData); $Message = val('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'); } } 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(), ['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'); } }