Return the default provider.
public static getDefault ( ) : array | ||
return | array |
/** * Check the default provider to see if it overrides one of the entry methods and then redirect. * * @param string $Type One of the following. * - SignIn * - Register * - SignOut (not complete) * @param string $Target * @param string $TransientKey */ protected function checkOverride($Type, $Target, $TransientKey = null) { if (!$this->Request->get('override', true)) { return; } $Provider = Gdn_AuthenticationProviderModel::getDefault(); if (!$Provider) { return; } $this->EventArguments['Target'] = $Target; $this->EventArguments['DefaultProvider'] =& $Provider; $this->EventArguments['TransientKey'] = $TransientKey; $this->fireEvent("Override{$Type}"); $Url = $Provider[$Type . 'Url']; if ($Url) { switch ($Type) { case 'Register': case 'SignIn': // When the other page comes back it needs to go through /sso to force a sso check. $Target = '/sso?target=' . urlencode($Target); break; case 'SignOut': $Cookie = c('Garden.Cookie.Name'); if (strpos($Url, '?') === false) { $Url .= '?vfcookie=' . urlencode($Cookie); } else { $Url .= '&vfcookie=' . urlencode($Cookie); } // Check to sign out here. $SignedOut = !Gdn::session()->isValid(); if (!$SignedOut && (Gdn::session()->validateTransientKey($TransientKey) || $this->Form->isPostBack())) { Gdn::session()->end(); $SignedOut = true; } // Sign out is a bit of a tricky thing so we configure the way it works. $SignoutType = c('Garden.SSO.Signout'); switch ($SignoutType) { case 'redirect-only': // Just redirect to the url. break; case 'post-only': $this->setData('Method', 'POST'); break; case 'post': // Post to the url after signing out here. if (!$SignedOut) { return; } $this->setData('Method', 'POST'); break; case 'none': return; case 'redirect': default: if (!$SignedOut) { return; } break; } break; default: throw new Exception("Unknown entry type {$Type}."); } $Url = str_ireplace('{target}', rawurlencode(url($Target, true)), $Url); if ($this->deliveryType() == DELIVERY_TYPE_ALL && strcasecmp($this->data('Method'), 'POST') != 0) { redirectUrl($Url, 302); } else { $this->setData('Url', $Url); $Script = <<<EOT <script type="text/javascript"> window.location = "{$Url}"; </script> EOT; $this->render('Redirect', 'Utility'); die; } } }
function signInUrl($target = '', $force = false) { // Check to see if there is even a sign in button. if (!$force && strcasecmp(C('Garden.Registration.Method'), 'Connect') !== 0) { $defaultProvider = Gdn_AuthenticationProviderModel::getDefault(); if ($defaultProvider && !val('SignInUrl', $defaultProvider)) { return ''; } } return '/entry/signin' . ($target ? '?Target=' . urlencode($target) : ''); }
/** * Method for plugins that want a friendly /sso method to hook into. * * @param RootController $Sender * @param string $Target The url to redirect to after sso. */ public function rootController_sso_create($Sender, $Target = '') { if (!$Target) { $Target = $Sender->Request->get('redirect'); if (!$Target) { $Target = '/'; } } // Get the default authentication provider. $DefaultProvider = Gdn_AuthenticationProviderModel::getDefault(); $Sender->EventArguments['Target'] = $Target; $Sender->EventArguments['DefaultProvider'] = $DefaultProvider; $Handled = false; $Sender->EventArguments['Handled'] =& $Handled; $Sender->fireEvent('SSO'); // If an event handler didn't handle the signin then just redirect to the target. if (!$Handled) { safeRedirect($Target, 302); } }