public function actionSecurity() { $response = parent::actionSecurity(); if (bdApiConsumer_Option::get('takeOver', 'login')) { if ($response instanceof XenForo_ControllerResponse_View and !empty($response->subView) and empty($response->subView->params['hasPassword'])) { $userExternalModel = $this->getModelFromCache('XenForo_Model_UserExternal'); $auths = $userExternalModel->bdApiConsumer_getExternalAuthAssociations(XenForo_Visitor::getUserId()); if (!empty($auths)) { foreach ($auths as $auth) { $provider = bdApiConsumer_Option::getProviderByCode($auth['provider']); $link = bdApiConsumer_Helper_Provider::getAccountSecurityLink($provider); if (!empty($link)) { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $link); } } } } } return $response; }
public static function renderOptionLoginSocial(XenForo_View $view, $fieldPrefix, array $preparedOption, $canEdit) { $providers = self::getProviders(); switch ($preparedOption['option_id']) { case 'bdapi_consumer_loginFacebook': $social = 'facebook'; break; case 'bdapi_consumer_loginTwitter': if (self::get('_is130+')) { $social = 'twitter'; } break; case 'bdapi_consumer_loginGoogle': if (self::get('_is130+')) { $social = 'google'; } break; } if (empty($social)) { // unrecognized option return ''; } $choices = array('' => ''); foreach ($providers as $provider) { $providerLoginSocial = bdApiConsumer_Helper_Provider::getLoginSocial($provider); if (!empty($providerLoginSocial['social']) and in_array($social, $providerLoginSocial['social'], true)) { $choices[$provider['code']] = $provider['name']; } } $preparedOption['formatParams'] = $choices; return XenForo_ViewAdmin_Helper_Option::renderOptionTemplateInternal('option_list_option_select', $view, $fieldPrefix, $preparedOption, $canEdit); }